2012-01-17 142 views
2

我有兩個類似的問題如何PHP腳本執行

  1. 如何PHP腳本執行。例如,我有一個文件被某些參數調用。比方說,腳本首先開始處理請求,然後連接到數據庫,在數據庫中將值插入表中,然後在文本文件中顯示或記錄報告。假設PHP文件正在將數據插入到數據庫中,並提出另一個請求。它會處理第二個請求嗎?

  2. 談到回合PayPal API和ESP IPN Listner,貝寶建議保持最小的監聽器。因此,可以說我的聽衆剛剛收到約20個參數的付款通知請求。現在,我將把這些數據保存到數據庫中,但同時希望快速獲得空閒空間,以便我可以捕獲其他請求。我的邏輯應該是什麼?使用CURL或類似的東西把請求發送到數據插入到表中的另一個頁面?這將使我的主聽衆減少負載和快速。這是正確的方法嗎?或者我應該在主監聽器中進行數據插入。

注意:我檢查了How exactly is a PHP script executed?並且他們的答案在PHP內部有一個小時的講座。不是一個明確的答案。

+0

問題1:每個執行PHP的http請求都作爲一個單獨的完全獨立的線程運行,所以當第二個請求被收到時,你的第一個腳本不會停止執行......他們將運行完成。 – 2012-01-17 19:31:56

+0

所以第一個請求在中間,第二個到達。他們兩人將分開完成?這不是因爲劇本在第一個劇本中忙碌,它會錯過第二個劇本嗎? – 2012-01-17 19:38:35

+2

除非您鎖定兩個進程之間共享__deliberately__的資源(如會話文件),否則它們都將完全獨立運行。 – 2012-01-17 19:39:49

回答

1

php腳本如何執行。例如,我有一個文件被某些參數調用。比方說,腳本首先開始處理請求,然後連接到數據庫,在數據庫中將值插入表中,然後在文本文件中顯示或記錄報告。假設PHP文件正在將數據插入到數據庫中,並提出另一個請求。它會處理第二個請求嗎?

將使用PHP的單獨實例。

談到回合PayPal API和ESP IPN Listner,貝寶建議保持最小的監聽器。因此,可以說我的聽衆剛剛收到約20個參數的付款通知請求。現在,我將把這些數據保存到數據庫中,但同時希望快速獲得空閒空間,以便我可以捕獲其他請求。我的邏輯應該是什麼?使用CURL或類似的東西把請求發送到數據插入到表中的另一個頁面?這將使我的主聽衆減少負載和快速。這是正確的方法嗎?或者我應該在主監聽器中進行數據插入。

不,cURL在阻塞,這樣會讓事情變得更糟。只需在正在訪問的主PHP文件中執行此操作 - 如果有20個人同時點擊它,您的Web服務器應該可以毫不費力地將它們分開。

3

不管被調用的次數多少,PHP腳本都會像它應該那樣工作。如果php正在執行並且被再次請求,它將創建一個新的「實例」,這個php與另一個已經運行的副本一起運行,所以你不應該收到任何中斷。

IPN監聽器就是這種類型事務的一個例子。 PayPal的每一個url請求都將由php腳本的一個獨立副本來處理,並且完全不會中斷。