2013-11-24 4 views
0

Как запустить php-файл в фоновом режиме после отправки формы. Погрузка должна происходить в фоновом режиме, поскольку она обычно занимает очень много времени.Запуск тяжелого файла php в фоновом режиме без cronjobs

В основном это похоже на запуск cronjob, за исключением того, что я хочу запускать его вручную и с помощью моего браузера.

ответ

0

Запустите запрос, используя AJAX. Браузер продолжит работу в ожидании ответа. Вы можете даже показать всплывающее окно или некоторую информацию, когда запрос будет завершен, хотя вам этого не нужно.

+0

Таким образом, пользователю придется ждать, пока файл не загрузится, не так ли? Я хочу, чтобы иметь возможность закрыть мой браузер сразу после запроса, но все равно продолжить загрузку файла на стороне сервера. – domino

1

Существует несколько возможных способов сделать это.

  1. Попробуйте установить ignore_user_abort в TRUE в вашем скрипте.
    Если изменить на TRUE, сценарии не будут прекращены после того, как клиент прервал их соединение.

  2. Посмотрите popen() и pclose(). Вы можете сделать что-то вроде этого:

    pclose(popen("start php /path/to/myscript.php", "r"));

  3. Вы можете начать отдельный процесс PHP с system() или exec() вызова. Что-то вроде этого:

    system('php /path/to/myscript.php >/dev/null 2>&1 &');

+0

pclose, похоже, не работает, и с системой я получаю «No input file указанный». – domino

+0

Я использую # 2 и # 3 как в рабочем приложении. # 2 в Windows, № 3 в Linux. Двойная проверка всех ваших путей, звуки, как будто у вас что-то еще происходит. – jszobody

+0

Убедитесь, что вы можете открыть командную строку и выполнить «php/path/to/myscript.php» непосредственно с терминала, без ошибок. – jszobody

Смежные вопросы