2009-07-22 25 views
0

我已經在PHP中爲一個做了幾件事情的小商店構建了一個腳本。如何排查PHP進程故障

啓動數據庫連接,並查詢數據庫幾次。 讀/寫會話 提出請求到PayPal PDT用的fsockopen() 解析結果 保存爲DB

一些測試後,服務器將停止加載。 支持讓我知道,有20個運行PHP進程(這是極限) 出於某種原因,他們無法正常

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND 
bobbysue 970 0.0 0.1 23836 8708 ? S 15:46 0:00 /usr/local/bin/php5.cgi index.php 
bobbysue 1574 0.0 0.1 23836 8708 ? S 15:47 0:00 /usr/local/bin/php5.cgi index.php 
bobbysue 2328 0.0 0.1 23840 8708 ? S 15:47 0:00 /usr/local/bin/php5.cgi index.php 
bobbysue 4031 0.0 0.1 23836 8704 ? S 15:49 0:00 /usr/local/bin/php5.cgi index.php 
bobbysue 7112 0.0 0.1 23836 8708 ? S 15:51 0:00 /usr/local/bin/php5.cgi index.php... 

1關閉)我怎樣才能解決我的劇本,看看哪裏出了問題可能在於? 2)我如何確保啓動正確終止的進程? 謝謝 Rich

+0

尼斯開始就得到你所需要的信息 - 我投了3分到目前爲止的答案,他們每個添加的東西。 – Smandoli 2009-07-24 17:29:34

回答

3

您可以使用PHP調試器。

DBG是一個不錯的選擇。我使用PHPEd,但我相信DBG也會以其他方式工作。

http://www.php-debugger.com/dbg/

http://www.php-debugger.com/dbg/installation.php

http://www.nusphere.com/products/php_debugger.htm

還有一些其他像樣的免費或近乎免費PHP調試選項:

http://www.google.com/search?client=opera&rls=en&q=php+debugger&sourceid=opera&ie=utf-8&oe=utf-8

或者,如果這些守護進程,或者沒有在瀏覽器中運行,你可能會有t o將信息寫入日誌文件。我不確定他們是否可以調試 - 請檢查谷歌。

編輯從意見建議

,XDebug的看起來也相當不錯。

http://xdebug.org/docs/

更新2

看起來你現在可以調試PHP-CLI與DBG了。

+0

使用XDebug的NetBeans在Ubuntu上運行良好;對於WinXP,它是PHPDesigner – Smandoli 2009-07-24 17:28:26

2

LOP。

大量的打印語句。找出應用掛在哪裏並在那裏處理。如果腳本與終端/ apache進程斷開連接,您可以將腳本寫入日誌文件。

當然調試器可以很好地用於本太;)

2

我使用的Xdebug與exection痕跡,很容易安裝和使用

這可能需要一些時間來產生的痕跡,它得到的時間很長,但如果一個成功的話隔離一個懷疑行爲不好的代碼就容易多了。 Xdebug and execution trace

另一個很酷的事情是,你可以到性能檢查,看看代碼Zend引擎花費很長的時間:

Xdebug and Profiling

有關於如何使用Xdebug的很多教程在谷歌上。

一般來說,當在PHP上使用套接字時,很多事情可能會出錯。根據服務器運行的腳本以及如何配置php,目標服務器是否會發送正確答案,您是否需要設置超時?檢查您是否遵循PayPal的API。

如果它是一個外部/環境問題,你可能最終開支將很長一段時間調試,否則無瑕的代碼;)