2

バックグラウンドで実行されるメインスクリプトからphpスクリプトを呼び出す必要があります(応答を待たずに呼び出して続行したいだけです)しかし、呼び出されたスクリプトでユーザーセッションにアクセスする必要があります

4

4 に答える 4

2

私のアドバイスは、デフォルトの PHP セッションを使用しないことです。これは、バックグラウンド プロセスでの作業が面倒になる可能性があるためですsession_set_save_handler DBベースセッション用のphp

ここに良い例がありますhttp://www.php.net/manual/en/function.session-set-save-handler.php#96305

于 2012-05-02T09:38:53.877 に答える
0

電話

string file_get_contents ( string $filename [, bool $use_include_path = false [, resource $context [, int $offset = -1 [, int $maxlen ]]]] )

$maxlen = 0 で;

ファイル名には URL を指定できます。その URL でセッション ID を渡し、呼び出されたスクリプトで session_id() を使用してセッション ID を設定し、session_start() を呼び出します。

呼び出されたスクリプトが、flush() と ob_flush() を使用して少なくとも 520 文字のダミー文字を返すことを確認して、呼び出し元のスクリプトが待機しないようにします。

于 2012-05-02T09:36:56.567 に答える
0

「セッション」の背後にある全体的なポイントは、ユーザークライアントが「ステートレス」な方法でサーバーに複数回接続できるようにすることですが、1 つの接続のように「ステート」を維持することです。「セッション」データは、同じユーザー クライアントからの複数の接続間で共有されます。

サーバー上でバックグラウンド プロセスを生成すると、PHP を使用しているかどうかに関係なく、「セッション」はもはや本当の意味を持ちません。ユーザーは、サーバーのバックグラウンド プロセスに影響を与えることなく、クライアント マシンをシャットダウンすることさえあります。

それを念頭に置いて、他の場所で提案されているように Cookie を使用することはまったく役に立ちません。Cookie はクライアント マシンに保存され、バックグラウンド プロセスは Cookie へのゼロ アクセスを持ちます。

バックグラウンド プロセスが必要とするクライアント情報がある場合、呼び出しプロセスは、何らかのパラメータまたはデータ ファイルとしてバックグラウンド プロセスにそれを渡す必要があります。

「$_SESSION」変数を Json でエンコードされたデータ文字列として一時ファイルに保存することをお勧めします。バックグラウンド プロセスはそのファイルを読み取り、Json デコードして配列に戻し、$_SESSION であるかのように使用できます。次に、一時ファイルを削除します。

于 2016-02-29T22:33:57.207 に答える
-1
$_COOKIE['PHPSESSID'] = 'user_session_id';//Transfer parameters through $GLOBALS['argv']
session_start();
于 2012-05-02T09:26:17.953 に答える