(PECL sync >= 1.0.0)
SyncSemaphore::lock β Π£ΠΌΠ΅Π½ΡΡΠ°Π΅Ρ ΡΡΡΡ ΡΠ΅ΠΌΠ°ΡΠΎΡΠ° ΠΈΠ»ΠΈ ΠΆΠ΄ΡΡ
Π£ΠΌΠ΅Π½ΡΡΠ°Π΅Ρ ΡΡΡΡΡΠΈΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΠ° SyncSemaphore ΠΈΠ»ΠΈ ΠΆΠ΄ΡΡ, ΠΏΠΎΠΊΠ° ΡΠ΅ΠΌΠ°ΡΠΎΡ Π½Π΅ ΡΡΠ°Π½Π΅Ρ ΠΎΡΠ»ΠΈΡΠ½ΡΠΌ ΠΎΡ Π½ΡΠ»Ρ.
wait
Π€ΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ true, Π΅ΡΠ»ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΠ»Π°ΡΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ, ΠΈΠ»ΠΈ false, Π΅ΡΠ»ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΎΡΠΈΠ±ΠΊΠ°.
ΠΡΠΈΠΌΠ΅Ρ #1 ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ SyncSemaphore::lock()
<?php
$semaphore = new SyncSemaphore("LimitedResource_2clients", 2);
if (!$semaphore->lock(3000))
{
echo "ΠΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΠΌΠ°ΡΠΎΡ.";
exit();
}
/* ... */
$semaphore->unlock();
?>