コメントセクションのあなたの答えに基づいて私はそれを説明し、これを解決しようとします - 私はこの問題で何度も走ったので - あなたのajax呼び出しがセッションライブラリを使用していないと書いていますとにかくそれを始めるならば、外に出てください。
PHPはセッションデータをデフォルトでファイルに書き込みます。要求が開始されると、セッションが開始されます。このセッションファイルはロックされています。これは、あなたのウェブページがPHPスクリプトに大量のリクエストを出した場合、例えば、 Ajax経由でコンテンツをロードするために、各リクエストはセッションをロックし、他のリクエストが完了するのを防ぎます。
私たちはそのような状況を防ぐためにやったことは以下の通りです:あなたの/application/config/hooks.phpで
$hook['pre_controller'][] = array(
"class" => "AppSessionInterceptor",
"function" => "initialize",
"filename" => "AppSessionInterceptor.php",
"filepath" => "hooks"
);
その後AppSessionInterceptor
と呼ばれるフックを作成
class AppSessionInterceptor
{
private $ci;
public function __construct()
{
$this->ci = &get_instance();
}
public function initialize()
{
//some doings
$this->closeSession();
}
private function closeSession()
{
$blnSessWriteClose = true;
$arrStopSessionFromWriteClose = array(
$this->ci->uri->segment(1) => array("logout","login"),
$this->ci->uri->segment(2) => array("logout","login"),
$this->ci->input->get("blnWriteSession") => array(1)
);
foreach($arrStopSessionFromWriteClose AS $key => $arrValue)
{
if (in_array($key, $arrValue))
{
$blnSessWriteClose = false;
break;
}
}
if ($blnSessWriteClose) session_write_close();
}
}
これは、他のものが呼び出される前にセッションを閉じます。 セッションを閉じると、データを読み取ることはできますが、それ以上書き込むことはできません。
セッションを使用していますか? – sintakonte
セッションライブラリを使用するかどうかによって異なりますか?はい、私たちは、もしajax呼び出しがそれを使用していれば?いいえ、セッションがページの読み込みにどのくらい関連しているのか分かりませんか? – killstreet
アンロードイベントでアクティブなすべてのAjaxを中止することができます。 – developerCK