Я хочу использовать семафоры в моем коде PHP. я обновленный версия PHP моего сервера, и она работает нормально через командную строку. Когда я пытаюсь получить к нему доступ через браузер это дает мне ошибку:
Fatal error: Call to undefined function sem_get() in .../semaphore.php on line 8
Вот код:
<?php
$key = 123567;
$maxAcquire = 1;
$permissions = 0666;
$autoRelease = 1;
//it gives the error on the line below
$semaphore = sem_get($key, $maxAcquire, $permissions, $autoRelease);
sem_acquire($semaphore);
echo "hello world!";
sem_release($semaphore);
?>
Даже если он работает через командную строку, почему он не работает в браузере? Это о сервер Apache? Есть ли у вас какие-либо предложения о мьютекс на PHP кроме семафоры? Я хочу, чтобы текст в базе данных редактировался одним пользователем за раз. Спасибо.
примечание по установке отмечает:
Поддержка этих функций не включена по умолчанию. Чтобы включить поддержку семафора System V, скомпилируйте PHP с параметром —enable-sysvsem. Чтобы включить поддержку разделяемой памяти System V, скомпилируйте PHP с параметром —enable-sysvshm. Чтобы включить поддержку сообщений System V, скомпилируйте PHP с параметром —enable-sysvmsg.
Вы скомпилировали PHP с --enable-sysvsem
включить функцию.
Наконец, вы можете проверить статус поддержки семафора, используя phpinfo()
функция.
ОБНОВИТЬ Кроме того, OP обнаружил, что Apache использует версию, отличную от версии PHP, используемой в консоли. Поэтому вывод из браузера и консоли различен.
Других решений пока нет …