#50126 [Opn->Csd]: Shared Memory functions work on CLI-win32

From: Date: Fri, 13 Nov 2009 16:48:39 +0000
Subject: #50126 [Opn->Csd]: Shared Memory functions work on CLI-win32
References: 1  Groups: php.doc.bugs 
Request: Send a blank email to doc-bugs+get-3100@lists.php.net to get a copy of this message
ID: 50126 Updated by: vrana@php.net Reported By: Hendrik dot Mundt at googlemail dot com -Status: Open +Status: Closed Bug Type: Documentation problem Operating System: Windows XP PHP Version: 5.2.11 New Comment: This bug has been fixed in the documentation's XML sources. Since the online and downloadable versions of the documentation need some time to get updated, we would like to ask you to be a bit patient. Thank you for the report, and for helping us make our documentation better. Removed: "Under Windows, Shmop will only work when PHP is running as a web server module, such as Apache or IIS (CLI and CGI will not work)." Previous Comments: ------------------------------------------------------------------------ [2009-11-12 10:23:46] rquadling@php.net Excellent test. I've tested all released CLI for PHP V5.0.0+ and this seems to work just fine. ------------------------------------------------------------------------ [2009-11-11 19:45:09] Hendrik dot Mundt at googlemail dot com > Who exactly are you sharing with when using CLI? I am sharing the memory with another php script that is also started by the PHP CLI binary. Below is another example, based on the example from the manual. Put both files in the same directory and start the first script. The second script will be called by the first one. I tested this on Windows XP Media Center Edition with most recent OS updates. No web server software is running. Tested PHP versions: 5.2.9-1, 5.2.11, 5.2.11-nts. The two scripts below can be started by different versions ... it still works. The manual says it does not work with CLI. Is it safe to use the shmop functions on win32 CLI? If it is safe then it would be nice to reflect this in the manual. test.shmop.php : <?php // Create 100 byte shared memory block with system id of 0xff3 $shm_id = shmop_open(0xff3, "c", 0644, 100); if (!$shm_id) { echo "Couldn't create shared memory segment\n"; } // Get shared memory block's size $shm_size = shmop_size($shm_id); echo "SHM Block Size: " . $shm_size . " has been created.\n"; // Lets write a test string into shared memory $shm_bytes_written = shmop_write($shm_id, "my shared memory block", 0); if ($shm_bytes_written != strlen("my shared memory block")) { echo "Couldn't write the entire length of data\n"; } echo "Starting second script ...\n"; $output = php test2.shmop.php; echo $output; echo "Second script ended.\n"; // Now lets read the string back $my_string = shmop_read($shm_id, 0, $shm_size); if (!$my_string) { echo "Couldn't read from shared memory block\n"; } echo "The data inside shared memory was: " . $my_string . "\n"; //Now lets delete the block and close the shared memory segment if (!shmop_delete($shm_id)) { echo "Couldn't mark shared memory block for deletion."; } shmop_close($shm_id); ?> test2.shmop.php : <?php // Create 100 byte shared memory block with system id of 0xff3 $shm_id = shmop_open(0xff3, "c", 0644, 100); if (!$shm_id) { echo "Couldn't create shared memory segment\n"; } // Get shared memory block's size $shm_size = shmop_size($shm_id); echo "SHM Block Size: " . $shm_size . " has been created.\n"; // Now lets read the string back $my_string = shmop_read($shm_id, 0, $shm_size); if (!$my_string) { echo "Couldn't read from shared memory block\n"; } echo "The data inside shared memory was: " . $my_string . "\n"; shmop_close($shm_id); ?> ------------------------------------------------------------------------ [2009-11-09 22:12:48] rquadling@php.net Who exactly are you sharing with when using CLI? ------------------------------------------------------------------------ [2009-11-09 15:15:58] Hendrik dot Mundt at googlemail dot com Description: ------------ Hi, the manual says (http://www.php.net/manual/en/intro.shmop.php): "Under Windows, Shmop will only work when PHP is running as a web server module, such as Apache or IIS (CLI and CGI will not work)." This is false, enabling the supplied php_shmop.dll these functions work in CLI version of php 5.2.9-1 & 5.2.11 on Windows XP. Proof: example from http://www.php.net/manual/en/shmop.examples-basic.php I didn't check any other versions than the above mentioned. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=50126&edit=1

« previous php.doc.bugs (#3100) next »