2011-10-10 60 views
2

我有一個奇怪的問題,使用AJAX發佈請求。我使用該請求通過使用php函數exec()直接在命令行上運行ImageMagick進程。該過程大約需要一分鐘,然後用一些變量進行響應。這工作正常,除了一個問題。在執行期間,我不能超出安裝在同一Web服務器上的網站其他部分(就像服務器無法訪問)。當這個過程結束時,一切都很好。Ajax Post請求塊網站加載

我首先想到這是由於服務器過載。但是,當您通過其他瀏覽器訪問網站時,即使在其他瀏覽器中的過程執行期間也沒有問題。所以看起來這些問題與瀏覽器在發佈請求期間阻止其他請求有關。

有人能幫我一下嗎?根本問題是什麼?

+0

只想問一下,你在你的應用程序中使用會話,以及如何處理它們 – kukipei

+0

我使用php session_start()函數來檢查用戶是否已登錄進入應用程序。與用戶標識一起,會話cookie存儲訪問令牌。每個發佈請求都會發送用戶標識和訪問標記,如果它們匹配,則會調用命令行請求。 – Bjorn

+0

嗯,這是我的意見,我不知道,但我認爲你的應用程序鎖定服務器上的會話文件,所以當你再次啓動你的應用程序時,它會嘗試訪問相同的會話文件,並且會話文件被鎖定。再次,我不確定... – kukipei

回答

0

找到解決方案!感謝kukipei的幫助通過添加session_write_close();到ajax請求的文件(在讀取用戶標識和標記之後),會話文件不再被鎖定,並且所有頁面都可以再次訪問。問題是會話在整個流程執行期間被鎖定,這是沒有必要的,因爲我只需要會話來讀取用戶標識和令牌。所以在調用ImageMagick操作之前,我現在要添加session_write_close()