我在使用PHP會話時遇到問題。會話被阻止
我使用AJAX嚮應用程序中的某個操作發送請求,該請求僅用於觸發進程的啓動。這個進程存儲在一個會話變量中。
問題是,我不能從另一個操作訪問這個變量,直到第一個操作完成。
事情是這樣的:
public function startWorkingAction() {
$namespace = new Zend_Session_Namespace('progressOfWork');
$namespace->totalItems = 0;
$namespace->processedItems = 0;
//... processing items
$namespace->totalItems = $itemCount;
foreach($items as $item) {
//process a single item
$namespace->processedItems++;
}
}
而且我還有一個行動檢查迄今取得的進展:
public function checkProgressAction() {
$namespace = new Zend_Session_Namespace('progressOfWork');
echo json_encode(array(
'total' => $namespace->totalItems,
'processed' => $namespace->processedItems
));
}
兩個動作與AJAX請求觸發。問題在於,在第一個操作完成之前,我無法訪問會話名稱空間。
我哪裏錯了?
AJAX以同步方式工作而不是異步。如果兩個Ajax請求都來自同一頁,那麼第二個請求會等待第一個完成。也許是錯的,但這是我通常觀察到的。除非你專門將它們設置爲async –
,否則我會強制取消第一個請求(我只需要它就可以啓動該進程)。 – undefined