On Wed, Jul 2, 2014 at 10:41 AM, Jim Giner <jim.giner@xxxxxxxxxxxxxxxxxx> wrote: > On 7/2/2014 5:40 AM, Uggla Henrik wrote: > >> 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); >> } >> >> 1 What's a child? > 2 You must use == in your if condition. > 3 ??? Why do you have a function defined in your else clause??? > > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > > The only issue I see in your code is that the parent is not waiting for the child to close, which can cause zombies. Add: pcntl_wait($status); As shown here: http://www.php.net/manual/en/function.pcntl-fork.php Also you are not checking if the fork failed (-1), shown on the above example. Your code with the wait works fine for me (outputs data and records data in the file).