note 114831 added to function.msg-send

From: Date: Fri, 11 Apr 2014 08:51:55 +0000
Subject: note 114831 added to function.msg-send
Groups: php.notes 
Request: Send a blank email to php-notes+get-199246@lists.php.net to get a copy of this message
I created example how to comunnicate with programe written in C throught messages queues. First run C program (it will create queue) then PHP script. C code compile with: gcc -std=c99 -o test_queue test_queue.c test_queue.c: /** * Example how to use System V Messages Queues with PHP and C program. * This is simple server which create message queue and receive message from it. * Based on Beej's Guide to Unix IPC * Autor: Jan Drazil, <qeekin at gmail dot com> */ #include <stdio.h> #include <stdlib.h> #include <errno.h> #include <string.h> #include <sys/types.h> #include <sys/ipc.h> #include <sys/msg.h> /* Buffer struct for receiving messages */ struct php_buf { long mtype; char msg[200]; }; int main(void) { struct php_buf buf; int msqid; key_t key; /* Generate key (/var/www/index.php must be accessible file) */ if((key = ftok("/var/www/index.php", 'G')) == -1) { perror("ftok"); exit(EXIT_FAILURE); } /* Create message queue */ if((msqid = msgget(key, 0666 | IPC_CREAT)) == -1) { perror("msgget"); exit(EXIT_FAILURE); } printf("Ready to get string from PHP!\n"); /* Receive message */ if(msgrcv(msqid, &buf, sizeof(buf.msg)-1, 0, 0) == -1) { perror("msgrcv"); exit(EXIT_FAILURE); } /* Eliminate segmentation fault */ buf.msg[199] = '\0'; printf("Recieved from PHP: %s\n", buf.msg); /* Destroy message queue */ if(msgctl(msqid, IPC_RMID, NULL) == -1) { perror("msgctl"); exit(EXIT_FAILURE); } return EXIT_SUCCESS; } test_queue.php: <?php /** * Example how to use System V Messages Queues with PHP and C program. * This is simple server which create message queue and receive message from it. * Based on Beej's Guide to Unix IPC * Autor: Jan Drazil, <qeekin at gmail dot com> */ /* Generate key, param fot ftok must be same as in test_msg.c */ if(($key = ftok("/var/www/index.php", "G")) == -1) die("ftok"); if(!msg_queue_exists($key)) die("message queue doesn't exists"); /* Connect to message queue */ if(($msqid = msg_get_queue($key)) === FALSE) die("msg_get_queue"); echo "Sending text to msg queue.\n"; /* Send message to C program */ if(!msg_send($msqid, 12, "Hello from PHP!\0", false)) die("msg_send"); echo "Done" ?> ---- Server IP: 89.187.142.233 Probable Submitter: 147.229.14.183 ---- Manual Page -- http://php.net/manual/en/function.msg-send.php Edit -- https://master.php.net/note/edit/114831 Del: integrated -- https://master.php.net/note/delete/114831/integrated Del: useless -- https://master.php.net/note/delete/114831/useless Del: bad code -- https://master.php.net/note/delete/114831/bad+code Del: spam -- https://master.php.net/note/delete/114831/spam Del: non-english -- https://master.php.net/note/delete/114831/non-english Del: in docs -- https://master.php.net/note/delete/114831/in+docs Del: other reasons-- https://master.php.net/note/delete/114831 Reject -- https://master.php.net/note/reject/114831 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#199246) next »