我偶然發現了一個有趣的問題。我正在使用Symfony2。簡化的問題如下。有兩個動作,每個在routing.yml中都有一個路徑。第一動作執行此:Symfony2並行處理
return new \Symfony\Component\HttpFoundation\Response("first");
第二動作執行此:
$start = time();
while(time()-$start < 25);
return new \Symfony\Component\HttpFoundation\Response("second");
第二操作運行25秒的循環,然後返回。
我打電話給第二個動作:domain.com/second(當然需要時間來加載),同時我打開另一個瀏覽器窗口並輸入:domain.com/first。這應該讓我一眨眼的結果,然而,即使第一個動作等待,直到第二個完成,他們給我的結果在同一時刻。這在開發和生產模式中都會發生。我假設這兩個過程應該自己運行。如果不是第一個動作,我會調用一個純PHP腳本(不是Symfony),它會立即返回而不用等待。另外,如果我在不同的瀏覽器中運行第一個和第二個操作,我不必等待第一個加載。
什麼可能導致問題?上述問題被簡化爲了解,但是,如果解決了這個問題,我的原始的,更復雜的任務也會起作用。
謝謝您的幫助:大衛
非常感謝您!會議是問題的根源。 session_write_close()解決了它。 – 2011-12-20 05:04:24