Re: PHP Multi-threading
am 31.03.2008 16:21:58 von George Maicovschi
On Mar 31, 5:45 pm, Jerry Stuckle wrote:
> George Maicovschi wrote:
> > Hey Erwin,
>
> > It's just an experiment of mine, nothing production-related... YET :-)
>
> > The thing goes like this. I have a script that's supposed to do an
> > action on lets say 100 different hosts in the same time. So I need
> > multi-threading ar a way to emulate it. My approach was this:
>
> > $threads=array();
> > $responses=array();
> > foreach ($hosts as $host)
> > $threads=fopen('http://domain.with.the.script/path/to/script /
> > script.php?op=action&host={$host}','r');
>
> > foreach ($threads as $thread_id=>$thread)
> > if ($thread)
> > {
> > $responses[$thread_id]=''
> > while (!feof($thread))
> > $response[$thread_id].=fgets($thread);
> > fclose($thread);
> > }
>
> > So now the threading part is emulated through Apache, making
> > concurrent requests to the script.php that contains the actions to be
> > undertaken and specifying the host that I want to be the target of the
> > actions.
>
> > Basically that's my approach to multi-threading emulation in PHP.
>
> > So...any suggestions/ideas/anything? :-)
>
> > I am really curious about other approaches because this multi-
> > threading thing in PHP seems rather disturbing because of it's
> > absence. :-)
>
> > Cheers,
> > George Maicovschi.
>
> Where are you creating new threads?
>
> I agree with Erwin - if you need to use threads, PHP isn't a good way to
> go. If you really need this and it's has to be in PHP, I'd look at
> spawning multiple processes off and do the work in batch mode, perhaps
> saving the results in a database.
>
> But personally I'd be looking at another language such as Java or C/C++
> which has good thread support.
>
> --
> ==================
> Remove the "x" from my email address
> Jerry Stuckle
> JDS Computer Training Corp.
> jstuck...@attglobal.net
> ==================
Yeah, I would go the C way myself, but it has to be PHP...
Re: PHP Multi-threading
am 31.03.2008 19:20:07 von Jerry Stuckle
George Maicovschi wrote:
> On Mar 31, 5:45 pm, Jerry Stuckle wrote:
>> George Maicovschi wrote:
>>> Hey Erwin,
>>> It's just an experiment of mine, nothing production-related... YET :-)
>>> The thing goes like this. I have a script that's supposed to do an
>>> action on lets say 100 different hosts in the same time. So I need
>>> multi-threading ar a way to emulate it. My approach was this:
>>> $threads=array();
>>> $responses=array();
>>> foreach ($hosts as $host)
>>> $threads=fopen('http://domain.with.the.script/path/to/script /
>>> script.php?op=action&host={$host}','r');
>>> foreach ($threads as $thread_id=>$thread)
>>> if ($thread)
>>> {
>>> $responses[$thread_id]=''
>>> while (!feof($thread))
>>> $response[$thread_id].=fgets($thread);
>>> fclose($thread);
>>> }
>>> So now the threading part is emulated through Apache, making
>>> concurrent requests to the script.php that contains the actions to be
>>> undertaken and specifying the host that I want to be the target of the
>>> actions.
>>> Basically that's my approach to multi-threading emulation in PHP.
>>> So...any suggestions/ideas/anything? :-)
>>> I am really curious about other approaches because this multi-
>>> threading thing in PHP seems rather disturbing because of it's
>>> absence. :-)
>>> Cheers,
>>> George Maicovschi.
>> Where are you creating new threads?
>>
>> I agree with Erwin - if you need to use threads, PHP isn't a good way to
>> go. If you really need this and it's has to be in PHP, I'd look at
>> spawning multiple processes off and do the work in batch mode, perhaps
>> saving the results in a database.
>>
>> But personally I'd be looking at another language such as Java or C/C++
>> which has good thread support.
>>
>> --
>> ==================
>> Remove the "x" from my email address
>> Jerry Stuckle
>> JDS Computer Training Corp.
>> jstuck...@attglobal.net
>> ==================
>
> Yeah, I would go the C way myself, but it has to be PHP...
>
That's a shame because you're trying to use a hammer when you need a
screwdriver.
There really is no *good* way to do it in PHP. About the only way
you're going to be able to do it is like I suggested above - spawn off
multiple processes to do the work and collect the results in a database
or similar.
--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex@attglobal.net
==================