Ondanks zoektochten op internet en informatie te hebben gelezen over semaphores en shared memory, ben ik nog steeds niet een oplossing voor mijn 'probleem' tegengekomen. Hopelijk kan iemand hier mij helpen.
Semaphores en shared memory doen niet echt wat ik wil (hoewel semaphores dicht in de buurt komt en ik shared memory wellicht kan gebruiken).
Mijn probleem: ik wil de uitvoering/executie van een script pauzeren, totdat een variabele een bepaalde waarde heeft gekregen (of een functie wordt aangeroepen o.i.d., niet zo relevant), waarna de uitvoering verder gaat. De plek waar gepauzeerd moet worden zit binnen een infinite loop.
sleep is geen oplossing, aangezien deze niet direct kan reageren op de wijziging.
(ik weet niet of de code opzicht uitvoerbaar is, maar het gaat om het idee)
Voor de duidelijkheid: het gaat dus om regel 11. Het wachten moet zo min mogelijk processortijd in beslag nemen.
Het idee is dus dat een.php een willekeurige waarde in het geheugen stopt, en dat direct daarna twee.php de willekeurige waarde output (bijvoorbeeld naar een browser).
Is zoiets mogelijk in PHP? Zo niet, kan het met een andere omgeving/taal, zoals .NET, JAVA, Perl etc?
Semaphores en shared memory doen niet echt wat ik wil (hoewel semaphores dicht in de buurt komt en ik shared memory wellicht kan gebruiken).
Mijn probleem: ik wil de uitvoering/executie van een script pauzeren, totdat een variabele een bepaalde waarde heeft gekregen (of een functie wordt aangeroepen o.i.d., niet zo relevant), waarna de uitvoering verder gaat. De plek waar gepauzeerd moet worden zit binnen een infinite loop.
sleep is geen oplossing, aangezien deze niet direct kan reageren op de wijziging.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| <?php //-- een.php $s = shm_attach(1); shm_put_var($s, 3, rand()); //-- twee.php $b = 0; $s = shm_attach(1); while(true) { wait_for(defined(@shm_get_var($s, 3))); // wacht op wijziging echo shm_get_var($s, 3) . "\n"; // andere statements flush(); shm_remove_var($s, 3); } ?> |
(ik weet niet of de code opzicht uitvoerbaar is, maar het gaat om het idee)
Voor de duidelijkheid: het gaat dus om regel 11. Het wachten moet zo min mogelijk processortijd in beslag nemen.
Het idee is dus dat een.php een willekeurige waarde in het geheugen stopt, en dat direct daarna twee.php de willekeurige waarde output (bijvoorbeeld naar een browser).
Is zoiets mogelijk in PHP? Zo niet, kan het met een andere omgeving/taal, zoals .NET, JAVA, Perl etc?
"In America, consumption equals jobs. In these days, banks aren't lending us the money we need to buy the things we don't need to create the jobs we need to pay back the loans we can't afford." - Stephen Colbert