тупик файла сессии php - PullRequest
3 голосов
/ 02 июля 2011

Исправляя сайт для кого-то, я столкнулся со следующей проблемой:

Чтобы обработать некоторые данные, он вызывает exec("/usr/bin/php /path/to/file.php input.dat"), тогда как вызываемый file.php содержит include("config.php"), который, в свою очередь, содержит вызов session_start().

Возникающая проблема - тупик, ожидающий flock("/tmp/sess_XXXXXX").Родительский сценарий блокирует файл сеанса, затем exec 'сценарий ed пытается продолжить тот же сеанс, снова блокируя этот файл, но ожидает его блокировки.

Я попытался поместить следующее всамое начало exec 'ed скрипта, но безрезультатно:

session_save_path("/tmp/alt_session");
session_id("NOTHING");

Очевидно, что есть что-то явно нелепое в вызове exec("php ...") из скрипта php, но это аргумент для другого дня,и не то, что я могу изменить здесь.Кроме того, хотя я могу свободно изменять файл, запускаемый под exec, изменение config.php может создать некоторые другие головные боли, которых я предпочел бы избежать.

Любые другие варианты, или яупустить что-то важное?

1 Ответ

3 голосов
/ 02 июля 2011

Существует ошибка php, которая, как мне кажется, связана с вашей проблемой.

Короче говоря, решение было запустить session_write_close() до file_get_contents() (что в вашем случаебыть exec())

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...