В то время как Отладка. Повреждение () строка сверх стека вызовов, Вы не можете выражения оценки. Поэтому та строка оптимизирована. Нажмите F10 для перемещения в следующую строку - будет работать допустимая строка кода - и часы.
Создает фоновый процесс и возвращает идентификатор фонового процесса, чтобы пользователь мог проверить его позже через какой-то секретный URL.
The ignore_user_abort
directive, and ignore_user_abort
function are probably what you are looking for : it should allow you to send the response to the browser, and, after that, still run some calculations on your server.
This article about it might interest you : How to Use ignore_user_abort() to Do Processing Out of Band ; quoting :
EDIT 2010-03-22 : removed the link (was pointing to http:// ! waynepan.com/2007/10/11/ ! how-to-use-ignore_user_abort-to-do-process-out-of-band/
-- remove the spaces and !
if you want to try ), after seeing the comment of @Joel.
Basically, when you use
ignore_user_abort(true)
in your php script, the script will continue работает, даже если пользователь нажал кнопку esc или остановитесь в своем браузере. Как ты использовать этот?
Одно из возможных применений - вернуть контент пользователю и разрешить соединение должно быть закрыто, пока обработка вещей, которые не требуют взаимодействие с пользователем.В следующем примере отправляется
$ response
пользователю, закрытие соединение (делая браузер остановка спиннера / загрузочной планки), а затем выполняетdo_function_that_takes_five_mins ();
И приведенный пример:
ignore_user_abort(true);
header("Connection: close");
header("Content-Length: " . mb_strlen($response));
echo $response;
flush();
do_function_that_takes_five_mins();
(Есть еще кое-что, что я не копировал и вставлял)
Обратите внимание, что ваш PHP-скрипт все еще должен соответствовать max_execution_time
и ограничения memory_limit
- это означает, что вы не должны использовать это для манипуляций, которые занимают слишком много времени.
Это также будет использовать один процесс Apache - что означает, что вы не должны есть десятки страниц, которые делают это одновременно.
Тем не менее, я полагаю, хороший трюк для повышения удобства использования; -)
Вам нужен вызов flush()
, чтобы ответ немедленно отправлялся в браузер.