Создание фонового процесса под HHVM

У меня есть скрипт php, который я хотел бы запустить в фоновом режиме после того, как пользователь отправит форму.
Казалось бы, самое простое решение — использовать вилку, подобную следующей:

$pid = pcntl_fork();
if ($pid) {
// Parent process. Do nothing.
} else {
// Child process. Put background script in this block.
}

Это хорошо работает из командной строки, но было «запрещено» для браузеров (HHVM не может использовать pcntl_fork).


Следующее простейшее решение — использовать

exec( 'php ' . $path . ' > /dev/null &' );

где $ path будет указывать на мой фоновый скрипт. Опять же, это прекрасно работает в командной строке, но при запуске из браузера это приведет к ошибке

«Не удалось инициализировать центральный репозиторий HHBC: не удалось открыть файл
/var/www/.hhvm.hhbc»

У меня даже не было папки / var / www /, поэтому в отчаянии я создал ее и вставил ссылку в .hhvm.hhbc из /home/vagrant/.hhvm.hhbc в новый каталог. Затем я получил удар

«Не удалось инициализировать центральное хранилище HHBC: не удалось инициализировать
схема в /var/www/.hhvm.hhbc: «

Я немного сходил с ума по chmod 777 по всей папке html и по оригинальному .hhvm.hhbc, но это не помогло мне.


Запустить мой фоновый скрипт на переднем плане очень неудобно для пользователя, потому что после нажатия кнопки «Отправить» перед нажатием кнопки «Отправить» появляется 15-секундная пауза. У кого-нибудь есть идеи как это сделать?

0

Решение

Попробуйте использовать «Pagelets». Это позволяет вам раскрутить новый фоновый PHP-запрос.
Документы здесь: https://github.com/facebook/hhvm/blob/master/hphp/doc/threading

1

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

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector