Поэтому я нашел функцию из http://php.net/manual/en/function.exec.php
function execInBackground($cmd) { if (substr(php_uname(), 0, 7) == "Windows"){ pclose(popen("start /B ". $cmd, "r")); } else { exec($cmd . " > /dev/null &"); } }
Использование Windows:
pclose(popen('start /B php path/to/background_cron.php', 'r'));
Использование Unix:
exec('php path/to/background_cron.php >> path/to/background_error.log &')
Но когда эти строки называются, ничего не происходит (после ожидания около 5 минут). Я делаю что-то неправильно? до активации этих строк у меня есть файл_exists, проверяющий, существует ли мой путь / to / background_cron.php, и если он не вернет ошибку.
На реальном сервере unix все разрешения на доступ к папке настроены на запись, чтение, выполнение для владельца, группы, общего доступа (0755), а права доступа к файлам – для владельца, группы, общедоступной (644). Background_log появляется пустым после запуска команды unix, он создает 4 новые пустые строки (\ n), но не возвращает никаких ожиданий