sysv.phpt 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. --TEST--
  2. General semaphore and shared memory test
  3. --EXTENSIONS--
  4. sysvsem
  5. sysvshm
  6. --FILE--
  7. <?php
  8. $MEMSIZE = 512; // size of shared memory to allocate
  9. $SEMKEY = ftok(__FILE__, 'P'); // Semaphore key
  10. $SHMKEY = ftok(__FILE__, 'Q'); // Shared memory key
  11. echo "Start.\n";
  12. // Get semaphore
  13. $sem_id = sem_get($SEMKEY, 1);
  14. if ($sem_id === FALSE) {
  15. echo "Fail to get semaphore";
  16. exit;
  17. }
  18. echo "Got semaphore.\n";
  19. // Accuire semaphore
  20. if (! sem_acquire($sem_id)) {
  21. echo "Fail to acquire semaphore.\n";
  22. sem_remove($sem_id);
  23. exit;
  24. }
  25. echo "Success acquire semaphore.\n";
  26. $shm_id = shm_attach($SHMKEY, $MEMSIZE);
  27. if ($shm_id === FALSE) {
  28. echo "Fail to attach shared memory.\n";
  29. sem_remove($sem_id);
  30. exit;
  31. }
  32. echo "Success to attach shared memory.\n";
  33. // Write variable 1
  34. if (!shm_put_var($shm_id, 1, "Variable 1")) {
  35. echo "Fail to put var 1 on shared memory $shm_id.\n";
  36. sem_remove($sem_id);
  37. shm_remove ($shm_id);
  38. exit;
  39. }
  40. echo "Write var1 to shared memory.\n";
  41. // Write variable 2
  42. if (!shm_put_var($shm_id, 2, "Variable 2")) {
  43. echo "Fail to put var 2 on shared memory.\n";
  44. sem_remove($sem_id);
  45. shm_remove ($shm_id);
  46. exit;
  47. }
  48. echo "Write var2 to shared memory.\n";
  49. // Read variable 1
  50. $var1 = shm_get_var ($shm_id, 1);
  51. if ($var1 === FALSE) {
  52. echo "Fail to retrieve Var 1 from Shared memory, return value=$var1.\n";
  53. } else {
  54. echo "Read var1=$var1.\n";
  55. }
  56. // Read variable 1
  57. $var2 = shm_get_var ($shm_id, 2);
  58. if ($var1 === FALSE) {
  59. echo "Fail to retrieve Var 2 from Shared memory, return value=$var2.\n";
  60. } else {
  61. echo "Read var2=$var2.\n";
  62. }
  63. // Release semaphore
  64. if (!sem_release($sem_id)) {
  65. echo "Fail to release semaphore.\n";
  66. } else {
  67. echo "Semaphore released.\n";
  68. }
  69. // remove shared memory segmant from SysV
  70. if (shm_remove ($shm_id)) {
  71. echo "Shared memory successfully removed from SysV.\n";
  72. } else {
  73. echo "Fail to remove shared memory from SysV.\n";
  74. }
  75. // Remove semaphore
  76. if (sem_remove($sem_id)) {
  77. echo "semaphore removed successfully from SysV.\n";
  78. } else {
  79. echo "Fail to remove semaphore from SysV.\n";
  80. }
  81. echo "End.\n";
  82. ?>
  83. --EXPECT--
  84. Start.
  85. Got semaphore.
  86. Success acquire semaphore.
  87. Success to attach shared memory.
  88. Write var1 to shared memory.
  89. Write var2 to shared memory.
  90. Read var1=Variable 1.
  91. Read var2=Variable 2.
  92. Semaphore released.
  93. Shared memory successfully removed from SysV.
  94. semaphore removed successfully from SysV.
  95. End.