php如何處理並行的兩個線程?

來源:互聯網
上載者:User
1.使用者上傳一張圖片到A伺服器的receive.php,
2.在A伺服器的receive.php接收到這個圖片後,會向B伺服器通過curl post這張圖片,
(由於圖片非常大,因此,A伺服器向B伺服器傳輸圖片非常耗時)
在這個耗時間長度久過程中,如果我再向A伺服器的receive.php發送一個請求request2,但是由於這個receive.php還正在向B伺服器傳輸圖片,因此這個請求一直要等待,直到A伺服器將這個圖片完全發送完畢為止,才回來處理第二個請求request2。

問題:現在怎樣打破這種隊列效應,讓A伺服器的receive.php同時處理兩個請求?
即使不能實現php多執行緒,那麼如何能讓request2做到偽請求,我的意思是,假設request2請求receive.php後,receive.php要查詢大量資料庫,最後echo "request done",現在我只需要輸出echo "request done"即可,其餘receive.php該搞啥就搞啥

回複內容:

1.使用者上傳一張圖片到A伺服器的receive.php,
2.在A伺服器的receive.php接收到這個圖片後,會向B伺服器通過curl post這張圖片,
(由於圖片非常大,因此,A伺服器向B伺服器傳輸圖片非常耗時)
在這個耗時間長度久過程中,如果我再向A伺服器的receive.php發送一個請求request2,但是由於這個receive.php還正在向B伺服器傳輸圖片,因此這個請求一直要等待,直到A伺服器將這個圖片完全發送完畢為止,才回來處理第二個請求request2。

問題:現在怎樣打破這種隊列效應,讓A伺服器的receive.php同時處理兩個請求?
即使不能實現php多執行緒,那麼如何能讓request2做到偽請求,我的意思是,假設request2請求receive.php後,receive.php要查詢大量資料庫,最後echo "request done",現在我只需要輸出echo "request done"即可,其餘receive.php該搞啥就搞啥

覺得你需要一個訊息佇列。

除此之外,可以:

以是轉載。PHP語言本身是不支援多線程的. 總結了一下網上關於PHP類比多線程的方法, 總的來說, 都是利用了PHP的好夥伴們本身所具有的多線程能力. PHP的好夥伴指的就是LINUX和APACHE啦, LAMP嘛.另外, 既然是類比的, 就不是真正的多線程. 其實只是多進程. 進程和線程是兩個不同的概念. 好了, 以下方法都是從網上找來的.1. 利用LINUX作業系統上面存成test.php, 然後寫一段SHELL代碼#!/bin/bashfor i in 1 2 3 4 5 6 7 8 9 10dophp -q test.php &done2. 利用fork子進程(其實同樣是利用LINUX作業系統) " . time() . " $str n";exit();// 子進程進程程式碼片段_End}}if ($bWaitFlag){for($i = 0; $i < $intNum; $i++) {pcntl_waitpid($pids[$i], $status, WUNTRACED);echo "wait $i -> " . time() . "n";}}echo ("Endn");?>3. 利用WEB SERVER, PHP不支援多線程, APACHE可是支援的, 呵呵.假設我們現在啟動並執行是a.php這個文檔. 但是我在程式中又請求WEB伺服器運行另一個b.php那麼這兩個文檔將是同時執行的.當然啦,也可以把需要多執行緒的部分交給JAVA去處理, 然後在PHP裡調用, 哈哈.

pthreads擴充可以實現真正的多線程,我前陣子做蘋果的推送服務有用到,不過有很多坑。
耗時任務可以考慮非同步,丟到訊息佇列中處理。

不知樓主的 HTTP 伺服器用的是什麼,怎麼會有這種奇怪的“隊列效應”?
難道說樓主限制了 HTTP 伺服器的並發請求數,同一時間只允許一個請求?

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.