popen - command line vs. web server performance

This is a discussion on popen - command line vs. web server performance within the PHP Language forums, part of the PHP Programming Forums category; say i have the following two php scripts: ptest.php: <? $p1 = popen("c:\\php\\php -q hello.php&...


Go Back   Usenet Forums > PHP Programming Forums > PHP Language

FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 10-10-2004
yawnmoth
 
Posts: n/a
Default popen - command line vs. web server performance

say i have the following two php scripts:

ptest.php:
<?
$p1 = popen("c:\\php\\php -q hello.php","r");
$p2 = popen("c:\\php\\php -q hello.php","r");
while (!feof($p1))
print fgets($p1);
while (!feof($p2))
print fgets($p2);
pclose($p1);
pclose($p2);
?>

and

hello.php:
<?
print "hello,\nworld!\n";
?>

when i run ptest.php via the command line (ie. by typing in c:\php\php
ptest.php at the dos prompt) it runs instantly.

when i run ptest.php via a webserver, the resultant page not only
doesn't even load - it results in a bunch of errors (that appear as
dialogue boxes on the machine doing the hosting) effectively saying
that the command failed to execute properly and will now be shut down.
after clicking through all the errors, the systems performance is
noticebly affected (and in fact is bad enough such that i think a
reboot is justified).

any ideas as to why this is, and what i can do to fix it?
Reply With Quote
  #2 (permalink)  
Old 10-11-2004
Pjotr Wedersteers
 
Posts: n/a
Default Re: popen - command line vs. web server performance

yawnmoth wrote:
> say i have the following two php scripts:
>
> ptest.php:
> <?
> $p1 = popen("c:\\php\\php -q hello.php","r");
> $p2 = popen("c:\\php\\php -q hello.php","r");
> while (!feof($p1))
> print fgets($p1);
> while (!feof($p2))
> print fgets($p2);
> pclose($p1);
> pclose($p2);
>>

>
> and
>
> hello.php:
> <?
> print "hello,\nworld!\n";
>>

>
> when i run ptest.php via the command line (ie. by typing in c:\php\php
> ptest.php at the dos prompt) it runs instantly.
>
> when i run ptest.php via a webserver, the resultant page not only
> doesn't even load - it results in a bunch of errors (that appear as
> dialogue boxes on the machine doing the hosting) effectively saying
> that the command failed to execute properly and will now be shut down.
> after clicking through all the errors, the systems performance is
> noticebly affected (and in fact is bad enough such that i think a
> reboot is justified).
>
> any ideas as to why this is, and what i can do to fix it?


Did you look at taskmanager to see what causes the poor performance ? Must
be some process hogging the cpu, would help to see if it has to do with
apache (or IIS?) Other than that, is it a typo here or does your hello.php
miss a ? before the end > ???


Reply With Quote
  #3 (permalink)  
Old 10-11-2004
yawnmoth
 
Posts: n/a
Default Re: popen - command line vs. web server performance

"Pjotr Wedersteers" <x33159@westerterp.com> wrote in message news:<416a4bc1$0$78279$e4fe514c@news.xs4all.nl>...
> yawnmoth wrote:
> > say i have the following two php scripts:
> >
> > ptest.php:
> > <?
> > $p1 = popen("c:\\php\\php -q hello.php","r");
> > $p2 = popen("c:\\php\\php -q hello.php","r");
> > while (!feof($p1))
> > print fgets($p1);
> > while (!feof($p2))
> > print fgets($p2);
> > pclose($p1);
> > pclose($p2);
> >>

> >
> > and
> >
> > hello.php:
> > <?
> > print "hello,\nworld!\n";
> >>

> >
> > when i run ptest.php via the command line (ie. by typing in c:\php\php
> > ptest.php at the dos prompt) it runs instantly.
> >
> > when i run ptest.php via a webserver, the resultant page not only
> > doesn't even load - it results in a bunch of errors (that appear as
> > dialogue boxes on the machine doing the hosting) effectively saying
> > that the command failed to execute properly and will now be shut down.
> > after clicking through all the errors, the systems performance is
> > noticebly affected (and in fact is bad enough such that i think a
> > reboot is justified).
> >
> > any ideas as to why this is, and what i can do to fix it?

>
> Did you look at taskmanager to see what causes the poor performance ? Must
> be some process hogging the cpu, would help to see if it has to do with
> apache (or IIS?) Other than that, is it a typo here or does your hello.php
> miss a ? before the end > ???


yeah - that was a typo. the actual hello.php file has it. anyway,
looking at task manager, i see that a *bunch* of php and cmd processes
are being created, and none are ending. so, what i assume happening
is that the computers memory is just being exhausted.

i tried to replace print "hello,\nworld\n" with
exit("hello,\nworld!\n") to no avail.

the exact error i get is as follows:

The application failed to initialize properly (0xc0000142). Click on
OK to Terminate.

i get that for both php.exe and cmd.exe.

in contrast, when i run it from the command line, it takes place so
fast that i don't see any process being created.
Reply With Quote
  #4 (permalink)  
Old 10-12-2004
Chung Leong
 
Posts: n/a
Default Re: popen - command line vs. web server performance

"yawnmoth" <terra1024@yahoo.com> wrote in message
news:a0d63404.0410101216.791b779e@posting.google.c om...
> say i have the following two php scripts:
>
> ptest.php:
> <?
> $p1 = popen("c:\\php\\php -q hello.php","r");
> $p2 = popen("c:\\php\\php -q hello.php","r");
> while (!feof($p1))
> print fgets($p1);
> while (!feof($p2))
> print fgets($p2);
> pclose($p1);
> pclose($p2);
> ?>
>
> and
>
> hello.php:
> <?
> print "hello,\nworld!\n";
> ?>
>
> when i run ptest.php via the command line (ie. by typing in c:\php\php
> ptest.php at the dos prompt) it runs instantly.
>
> when i run ptest.php via a webserver, the resultant page not only
> doesn't even load - it results in a bunch of errors (that appear as
> dialogue boxes on the machine doing the hosting) effectively saying
> that the command failed to execute properly and will now be shut down.
> after clicking through all the errors, the systems performance is
> noticebly affected (and in fact is bad enough such that i think a
> reboot is justified).
>
> any ideas as to why this is, and what i can do to fix it?


Could be a DLL incompatibility problem. The DLL search path in Windows, if I
remember correctly, goes like this: the current folder, the folder
containing executable, the system32 folder. If your webserver is running a
different version of PHP than the command line one, then the wrong DLL could
get loaded. Do a search for php4ts.dll and see if there're multiple copies.


Reply With Quote
  #5 (permalink)  
Old 10-13-2004
yawnmoth
 
Posts: n/a
Default Re: popen - command line vs. web server performance

On Tue, 12 Oct 2004 01:09:58 -0400, "Chung Leong"
<chernyshevsky@hotmail.com> wrote:

>"yawnmoth" <terra1024@yahoo.com> wrote in message
>news:a0d63404.0410101216.791b779e@posting.google. com...
>> say i have the following two php scripts:
>>
>> ptest.php:
>> <?
>> $p1 = popen("c:\\php\\php -q hello.php","r");
>> $p2 = popen("c:\\php\\php -q hello.php","r");
>> while (!feof($p1))
>> print fgets($p1);
>> while (!feof($p2))
>> print fgets($p2);
>> pclose($p1);
>> pclose($p2);
>> ?>
>>
>> and
>>
>> hello.php:
>> <?
>> print "hello,\nworld!\n";
>> ?>
>>
>> when i run ptest.php via the command line (ie. by typing in c:\php\php
>> ptest.php at the dos prompt) it runs instantly.
>>
>> when i run ptest.php via a webserver, the resultant page not only
>> doesn't even load - it results in a bunch of errors (that appear as
>> dialogue boxes on the machine doing the hosting) effectively saying
>> that the command failed to execute properly and will now be shut down.
>> after clicking through all the errors, the systems performance is
>> noticebly affected (and in fact is bad enough such that i think a
>> reboot is justified).
>>
>> any ideas as to why this is, and what i can do to fix it?

>
>Could be a DLL incompatibility problem. The DLL search path in Windows, if I
>remember correctly, goes like this: the current folder, the folder
>containing executable, the system32 folder. If your webserver is running a
>different version of PHP than the command line one, then the wrong DLL could
>get loaded. Do a search for php4ts.dll and see if there're multiple copies.


Thee's only one. I'm actually thinking that this is a bug in PHP. I
was told by my webhost to stop using a similar script because it kept
crashing their browser. Could other people test it out, and post
here, whether or not it works? Also, if it is a bug, how does one go
about filling a bug report?

Reply With Quote
Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are Off
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On



All times are GMT +1. The time now is 12:15 AM.


Powered by vBulletin® Version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.0.0