Re: Pass variable to pcntl_fork child

From: Date: Thu, 03 Jul 2014 07:31:41 +0000
Subject: Re: Pass variable to pcntl_fork child
References: 1 2 3  Groups: php.general 
Request: Send a blank email to php-general+get-323604@lists.php.net to get a copy of this message
If you're using php in HTTP environment, it is safer to do your staff in a http way. 于 2014年07月03日 15:18, Uggla Henrik 写道:
But how should I do in the HTTP SERVER environment? I don't want php to wait until the file write is finished before the url is displayed. I've tried to use flush, ob_flush but that didn't work, possibly because I have session_start in the beginning of my code. Should I use exec to start a second php? /H ________________________________________ Från: louis [smallbanglouis@gmail.com] Skickat: den 3 juli 2014 05:45 Till: php-general@lists.php.net Ämne: Re: [PHP] Pass variable to pcntl_fork child Child process should has the same environment as the parent process. I don't see any thing wrong with your code. I assume that you are using php to handle http request for the using of $_GET , but I think it is wrong to use multi process in PHP in the HTTP SERVER environment 于 2014年07月02日 17:40, Uggla Henrik 写道:
Hi! I've tried the following code but the $call variable is not available in the pcntl_fork child. Searching the web, I've found posts that claim that all variables defined before pcntl_fork are copied to the child. I've also found posts that claim that no variables are passed/copied to the child. So, which of them is true and how should I correct my code to make it work? regards Henrik
      $call = str_replace('@@', '&', $_GET['call']);
      if ($pid = pcntl_fork())
      {
          $previousCalls=file("calls.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
          if (!in_array($call, $previousCalls))
          {
              file_put_contents("calls.txt", $call."\n", FILE_APPEND);
          }
      }
      else
      {
          function displayUrl($url)
          {
              $ch = curl_init($url);
              curl_setopt ( $ch, CURLOPT_HEADER, 1);
              curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
              $curlResult = curl_exec($ch);
              curl_close($ch);
              list($headers,$content) = explode("\r\n\r\n",$curlResult,2);
              foreach (explode("\r\n",$headers) as $hdr)
              {
                  if ($hdr != 'Transfer-Encoding: chunked')
                  {
                      header($hdr);
                  }
              }
              echo $content;
          }
          displayUrl($call);
      }
-- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php


« previous php.general (#323604) next »