Re: Pass variable to pcntl_fork child

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



It's easy, you write a rest API to do the write staff, and in your main code , you just have to request the rest API and do not wait it to return
于 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@xxxxxxxxx]
Skickat: den 3 juli 2014 05:45
Till: php-general@xxxxxxxxxxxxx
Ämne: Re:  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



--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php





[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux