Как избежать состояния гонки в php-коде

У меня хороший опыт в Java / Java EE, но я очень плохо знаком с PHP. Есть небольшое требование, когда я хочу поделиться значением переменной (которая содержит маркер String)
через разные запросы пользователей. Теперь проблема в том, что я хочу сделать чтение и запись этой переменной потоком безопасным i. только один пользователь может читать / писать
в этой переменной.

Если бы я делал это в Java, я просто взял бы блокировку объекта, используя ключевое слово synchonized, и мог бы поместить блок кода (чтение / запись) в синхронизированный блок.

Здесь, в PHP, я поместил токен в массив GLOBALS, но я не получаю никакого способа сделать чтение и запись этого переменного потока безопасным. Я избегаю
использовать любую внешнюю библиотеку, чтобы избежать депрессии. Пожалуйста, объясните мне, как этого достичь.

0

Решение

Вы можете использовать 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);
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]