KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I have client and server in php communicating over shared memory, Now I would like to access this shred memory object using Boost.Interprocess how can I access it? server.php: function create_image($str){ // Create a blank image and add some text $im = imagecreatetruecolor(300, 20); $text_color = imagecolorallocate($im, 233, 14, 91); $stringBanner=exec("date").$str; imagestring($im, 1, 5, 5, $stringBanner , $text_color); ob_start(); imagejpeg($im); $i = ob_get_contents(); ob_get_clean(); imagedestroy($im); return $i; } echo "\n".__FILE__."\n"; $shm_key = ftok(__FILE__, 't'); echo $shm_key."\n"; $shm_id = shmop_open($shm_key, "a", 0, 0); if ($shm_id) { //it is already created shmop_delete($shm_id); shmop_close($shm_id); } //you need to create it with shmop_open using "c" only echo "try to create\n"; if(!$shm_id = shmop_open($shm_key, "c", 0777, 1024*4))exit(-1); echo "ID ".$shm_id."\n"; $i=0; for(;;){ sleep(1); $s="i=".$i++; $str=$i; $im=serialize(create_image($str)); $data=serialize(strlen($im)); $shm_bytes_written = shmop_write($shm_id, $data, 0); $shm_bytes_written = shmop_write($shm_id, $im, 32); echo $shm_bytes_written." bytes is written: ".$s." ID = $shm_id\n"; } client.php <?php $shm_key =1946222626;// ftok(__FILE__, 't'); $shm_id = shmop_open( $shm_key, "a", 0644,1024*4 ); $s=shmop_size($shm_id); $data = unserialize( shmop_read( $shm_id, 0, 31) ); $im = unserialize( shmop_read( $shm_id, 32, $data) ); // Set the content type header - in this case image/jpeg header('Content-Type: image/jpeg'); // Output the image echo $im; What kind of key I should provide to Boost to get this memory region? boost_client.cpp #include <boost/interprocess/shared_memory_object.hpp> #include <iostream> #in
Tags (comma-separated)
Save Edits
Cancel