Я делаю функцию для своих пользователей, где они могут загружать большие файлы XML для синхронизации с моей базой данных.
Когда пользователь загружает файл в upload.php
, я хочу начать обработку данных вфон с process.php
, предпочтительно из команды оболочки, и перенаправить пользователя на status.php
, который показывает процесс синхронизации.
Мне нужно передать некоторые переменные в сценарий process.php
при выполненииэто, по крайней мере, одна переменная с идентификатором пользователя и помещение других переменных в текстовый файл (вероятно, я бы предпочел это, поэтому мне не нужно вводить много данных в команду exec()
.) или идентификатор пользователя и кучаиз $_POST
переменных.
Одним из решений, которое я имел в виду , является выполнение сценария PHP следующим образом:
exec("php -f ./process.php > /dev/null 2>/dev/null &");
Это позволяет мне заблокировать process.phpиз http доступа, что хорошо, так как это процесс, принимающий скрипт.Единственное, что мне здесь нужно, это как-то передать переменную, но я не знаю, как это сделать.
Поэтому мой главный вопрос:
Как передать переменную вРешение выше?
Или у кого-нибудь из вас есть лучшее решение для этого?Возможно, один, где мне не придется проходить exec()
?Помните, что я не хочу, чтобы пользователь ждал выполнения скрипта, и мне нужно передать хотя бы одну переменную.
Обновление: Для дальнейшего использования не забудьте использовать escapeshellarg () при передаче аргументов через exec()
или аналогичные функции.