У меня есть функция в контроллере в CakePHP, которая потенциально может работать в течение тысяч секунд.Функция в основном имеет список ссылок и контактов нескольких API, чтобы получать от них различные SEO-данные.Таким образом, каждая ссылка может занять несколько секунд каждая.
Я пытался настроить раковину торта, чтобы сделать это для меня, но безуспешно.Самое близкое к этому, что у меня есть этот bash-скрипт, который запускает требуемую оболочку с параметром (в данном случае 30, который является идентификатором пользователя в системе).
/home/linkmoni/public_html/cake/console/cake -app /home/linkmoni/public_html/app updateuserlinks 30 > update3.txt 2> update3.err &
, а затем вызываем этот скрипт изв моем контроллере
$result = exec("sh update_links.sh > update2.txt 2> update2.txt");
Теперь скрипт bash работает, если я запускаю ssh на свой сервер и запускаю его прямо оттуда.Все ссылки обновляются правильно и все в порядке.При запуске из php exec, кажется, проблема.Насколько я могу судить, это связано с требованием входа пользователя в систему.
После выполнения приведенного выше кода единственный текст находится в update3.txt
Status: 302 Moved Temporarily
X-Powered-By: PHP/5.2.17
P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"
Location: http://linkmoni.com/~linkmoni/links
Content-type: text/html
ПередЯ дошел до того, что попытался возиться с файлами cookie wget и session, которые в некоторой степени работали, но требовали учетные данные для входа определенных пользователей.Это сработало в том, что обошло вход в систему, но я не смог получить доступ к данным любой модели.
Кто-нибудь знает, как я могу заставить это работать?В основном, все, что я хочу сделать, это запустить эту длинную функцию в фоновом режиме, имея при этом доступ к моделям CakePHP.
Спасибо всем!