Привет, возможно ли использовать сеансы в 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.