Re: PHP Multi-threading

Re: PHP Multi-threading

am 31.03.2008 15:24:37 von George Maicovschi

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.

Re: PHP Multi-threading

am 31.03.2008 16:45:41 von Jerry Stuckle

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.
jstucklex@attglobal.net
==================