Re: PHP Multi-threading

Re: PHP Multi-threading

am 31.03.2008 20:13:43 von George Maicovschi

On Mar 31, 8:20 pm, Jerry Stuckle wrote:
> 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.
> jstuck...@attglobal.net
> ==================

Well it seems I might be getting some results using fsockopen() on the
host the script is hosted for each 'thread', so I might be able to
achieve a pseudo-multithreading...

I'll post my findings here.