3

こんにちは、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 で始まります。

4

2 に答える 2

5

経由で cron から PHP スクリプトを呼び出す場合は、オプションwgetを使用します。--save-cookies経由の場合はcurl、使用して--cookie-jarください。(または同様の方法で PHP スクリプトを呼び出す場合は、まず、代わりにまたはを使用php -f [...]して呼び出す必要があります。)wgetcurl

例えば:

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はデフォルトでそれらを保存するので、必要なのは-bCookie を有効にし--cookie-jarcurl、それらの場所を指定することだけです。[...]どちらの場合でも、 をプログラムに既に渡しているオプションと引数に置き換え、好みに合わせて Cookie jar ファイルの場所を調整します。

于 2013-05-28T17:45:20.337 に答える
2

あまり。PHP セッションは、実際には HTTP コンテキストにのみ存在する Cookie に依存しています (trans-sid モードは無視されます)。cron ジョブは CLI モードで実行されているため、対処する http レイヤーはありません。

呼び出す前にセッション ID を設定することで、CLI スクリプトに特定のセッション ファイルを強制的に使用させることができますsession_start();が、他の PHP インスタンスのセッション ガベージ コレクターによって削除されている可能性があるため、cron ジョブの開始時に特定の ID が実際に存在するという保証はありません。

于 2013-05-28T17:20:46.777 に答える