@nikitoshq

Как реализовать многопоточность?

Суть в том что у меня есть файл к которому могут обращаться с нескольких источников, с помощью этой команды:
exec("/var/www/data/www/site.com/send.php");
Как в этом случае можно сделать какую-то очередь на выполнение файла?
  • Вопрос задан
  • 238 просмотров
Решения вопроса 2
twobomb
@twobomb
Открываем файл и устанавливаем эксклюзивный лок. Когда один скрипт работает с этим файлом, другому при попытке открыть его будет выдаваться ошибка. Суть в том что делаем бесконечный цикл, если выдается ошибка, то пытаемся открыть снова пока не сможем открыть. Только желательно ставить не бесконечное время жизни скрипта. set_time_limit ( сек);

while(true){
if ($fh = fopen($file, 'r+')) {
    echo "File opened successful\n";
    if (flock($fh, LOCK_EX)) {
        echo "Successfully locked filed with exclusive lock\n";
        flock($fh, LOCK_UN);
    } else {
         fclose($fh);
       continue;
    }
    fclose($fh);
   break;
} 
}
Ответ написан
uDenX
@uDenX
PHP Developer
Куда нибудь сохраняй состояние запущенности скрипта и в самом скрипте проверяй статус
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы