Jump to content

IPC functions running on Linux work, but fail on MacOS X


Recommended Posts

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:



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) {

    $keepListening = false;

  case MSG_HELLO:
    error_log($message . " says hello.\n", 0);

    $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);

  } // end switch
} // end while




Then in a separate file, 'msg_client.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);




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!


Link to comment
Share on other sites

This thread is more than a year old.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.