У меня хороший опыт в Java / Java EE, но я очень плохо знаком с PHP. Есть небольшое требование, когда я хочу поделиться значением переменной (которая содержит маркер String)
через разные запросы пользователей. Теперь проблема в том, что я хочу сделать чтение и запись этой переменной потоком безопасным i. только один пользователь может читать / писать
в этой переменной.
Если бы я делал это в Java, я просто взял бы блокировку объекта, используя ключевое слово synchonized, и мог бы поместить блок кода (чтение / запись) в синхронизированный блок.
Здесь, в PHP, я поместил токен в массив GLOBALS, но я не получаю никакого способа сделать чтение и запись этого переменного потока безопасным. Я избегаю
использовать любую внешнюю библиотеку, чтобы избежать депрессии. Пожалуйста, объясните мне, как этого достичь.
Вы можете использовать PECL pthreads. Который должен быть установлен.
Вы можете проверить использование от:
http://php.net/manual/en/threaded.synchronized.php
Или более простое решение — заблокировать файл.
$fp = fopen("/tmp/lock.txt", "r+");
if (flock($fp, LOCK_EX)) { // acquire an exclusive lock
ftruncate($fp, 0); // truncate file
fwrite($fp, "Write something here\n");
fflush($fp); // flush output before releasing the lock
flock($fp, LOCK_UN); // release the lock
} else {
echo "Couldn't get the lock!";
}
fclose($fp);
Других решений пока нет …