Re: php and multithreading (additional arguments)
| From: | Dennis Hotson | Date: | Thu, 01 Apr 2010 23:04:52 +0000 |
| Subject: | Re: php and multithreading (additional arguments) | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-47728@lists.php.net to get a copy of this message | ||
I use pcntl_fork() for writing parallel multi-process applications and it
works pretty well.
Also, you can use shared memory queues to pass messages between processes
(ie msg_get_queue()).
I wrote a little proof of concept library a while ago to demonstrate:
http://github.com/dhotson/Phork
It's not that complicated... the main part of it is only ~110 lines of code:
http://github.com/dhotson/Phork/blob/master/classes/Phork/Process.php
Regards,
Dennis
On Fri, Apr 2, 2010 at 1:32 AM, speedy <speedy.spam@gmail.com> wrote:
> Hello PHP folks,
>
> I've seen this discussed previously, and would like to add a few
> arguments for the multi-threading side vs. async processing,
> which I've seen mentioned as a viable alternative:
>
> 1. Imagine that from time to time, some background processing takes 1
> second of CPU time - w/o multithreading, all your async operations,
> like accepting a connection to a socket, aio or others are basically
> stalled. So, async is a good approach, but does not work as a magic
> wand for all problem spaces. Alternatively, you could fork and then do
> the
> processing, but then the state syncing of the forked background
> processing
> results with the main thread requires a whole new protocol / switching
> to
> interprocess communication, which makes such developments
> unnecessarily
> hard. Threads exist for a _reason_ not only because they sound cool.
>
> 2. Without thread support, it is not possible to use multi-core
> processing
> paradigms directly from PHP - which means PHP relies on external
> frameworks for
> that feature, which, in a sense, makes it a non-general-purpose
> language.
> It _could become_ a general purpouse tool, if it had proper
> multi-threading
> support built-in.
>
> I, personally, considered developing websockets / nanoserv server
> stack with PHP
> and bumped into the multithreading limitation - AFAIK it is the only
> big feature
> separating PHP from the general purpouse languages. Everything else is
> well
> integrated with lots of external libraries/modules giving rise to
> potential rapid
> application development while using it.
>
> Cheers and let me know about your thoughts, and potential core
> implementation
> issues regarding developing this language feature.
>
> --
> Best regards,
> speedy mailto:speedy.spam@gmail.com
>
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>