Использовать сеанс в Cronjob (Crontab)

Привет, возможно ли использовать сеансы в cronjob?

Используемый сценарий:

session_start(); if(empty($_SESSION['startwert'])){$startwert = 0;} else {$startwert = $_SESSION['startwert'];} if(empty($_SESSION['zielwert'])){$zielwert = 10000;} else {$zielwert = $_SESSION['zielwert'];} .... $_SESSION['startwert'] = $zielwert; $_SESSION['zielwert'] = $zielwert + 10000; echo "Startwert: ".$_SESSION['startwert']."<br>"; echo "Zielwert: ".$_SESSION['zielwert']."<br>"; 

Но Cron всегда запускает «startwert» до 10000 и «zielwert» до 20000, и он не увеличивает значения.


Хорошо, теперь я попробовал это.

 /usr/bin/wget -O - http://mydomain.com/script.php 

Но cron начинается с 10000 и 20000. Любые идеи?

Если вы вызываете скрипт PHP из cron через wget , используйте --save-cookies ; если через curl , используйте --cookie-jar . (Если вы вызываете PHP-скрипт через php -f [...] или аналогичный, то сначала вам нужно вызвать его через wget или curl .)

Например:

 wget --load-cookies /tmp/cron-session-cookies --save-cookies /tmp/cron-session-cookies --keep-session-cookies [...] 

или

 curl -b --cookie-jar /tmp/cron-session-cookies [...] 

wget по умолчанию не сохраняет файлы cookie сеанса, которые вы хотите сделать, поэтому параметр --keep-session-cookies ; curl по умолчанию сохраняет их, поэтому все, что необходимо, – -b чтобы включить файлы cookie и --cookie-jar чтобы сказать curl где их найти. В любом случае замените [...] любыми параметрами и аргументами, которые вы уже передаете программе, и настройте расположение файла файла cookie для вкуса.

На самом деле, нет. Сеансы PHP зависят от файлов cookie (игнорируя режим trans-sid), которые действительно существуют только в контексте HTTP. Задачи cron работают в режиме CLI, поэтому нет никакого http-уровня для решения.

Вы можете заставить скрипт CLI использовать определенный файл сеанса, установив идентификатор сеанса перед вызовом session_start(); , но нет гарантии, что конкретный идентификатор действительно будет существовать при запуске задания cron, поскольку, возможно, его удалил какой-то другой сборщик мусора для экземпляра PHP.