slipstream180 Posted August 14, 2009 Share Posted August 14, 2009 Hi All - I'm encountering a problem where I'm able to get the IPC message queue functions (msg_receive(), msg_send(), etc) working when running PHP on Ubuntu v9.04 Desktop, but on MacOS X v10.5.7 the msg_get_queue() function fails to retrieve the same message queue Resource across different PHP files. Here is the test code I am using, which is taken from the "PHP Core Programming" book: msg_server.php: <?php define ("SERVER_QUEUE", 1970); define ("MSG_SHUTDOWN", 1); define ("MSG_TOUPPER", 2); define ("MSG_HELLO", 3); $queue = msg_get_queue(SERVER_QUEUE); $keepListening = true; while($keepListening) { msg_receive($queue, 0, $type, 1024, $message, true, 0, $error); switch ($type) { case MSG_SHUTDOWN: $keepListening = false; break; case MSG_HELLO: error_log($message . " says hello.\n", 0); break; case MSG_TOUPPER: $clientQueue = msg_get_queue($message['caller']); $response = strtoupper($message['text']); msg_send($clientQueue, MSG_TOUPPER, $response); if ($error != null) error_log("MSG_TOUPPER ERROR: $error\n", 0); break; } // end switch } // end while msg_remove_queue($queue); ?> Then in a separate file, 'msg_client.php': <?php define ("SERVER_QUEUE", 1970); define ("MSG_SHUTDOWN", 1); define ("MSG_TOUPPER", 2); define ("MSG_HELLO", 3); $qid = rand(1, 10000); $queue = msg_get_queue($qid); $serverQueue = msg_get_queue(SERVER_QUEUE); msg_send($serverQueue, MSG_HELLO, $qid); msg_send($serverQueue, MSG_TOUPPER, array('caller' => $qid, 'text' => 'corephp')); msg_receive($queue, 0, $type, 1024, $message); msg_send($serverQueue, MSG_SHUTDOWN, NULL); msg_remove_queue($queue); ?> In this example, when running on Mac OS X, the server file never responds to the initial msg_send from msg_client.php. (Since the msg_get_queue() doesn't seem to access a common underlying queue for the "server". i.e. msg_get_queue(SERVER_QUEUE) returns a different resource in msg_client.php vs msg_server.php) The MacOS X LAMP stack is configured with the following versions of software: Apache/2.0.59 (Unix) PHP/5.2.5 DAV/2 mod_ssl/2.0.59 OpenSSL/0.9.7l The Ubuntu stack configuration: Apache/2.2.11 (Ubuntu) PHP/5.2.6-Ubuntu4.1 with Suhosin-Patch mod_ssl/2.2.11 OpenSSL/0.9.8g I don't know if this problem is a function of the underlying OS, or Apache, or something else... We are using Ubuntu to serve our website, but we also use Mac OS X for development & prototyping, so we need identical functionality across platforms. Thanks for any ideas in advance! Quote Link to comment https://forums.phpfreaks.com/topic/170219-ipc-functions-running-on-linux-work-but-fail-on-macos-x/ Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.