[英]How to fix curl_exec call hanging when Xdebug is enabled
我已經設置了本地ddev (基於docker ) PHP Drupal 7開發環境。 我已經使用Behat Drupal Extension為該站點設置了Behat測試。
所有Behat上下文文件和關聯的composer供應商文件夾都位於站點的Web根目錄之外的測試文件夾中。 文件夾結構如下所示:
項目
測試
public_html
我啟用了xdebug並使用PhpStorm 。 我已經設置了PhpStorm調試服務器並提供了正確的路徑映射。
通過瀏覽器調試php代碼效果很好,調試CLI命令效果很好。 當我嘗試通過CLI運行Behat測試時嘗試調試所有代碼時,會發生我的問題。
在PhpStorm PHP服務器配置中,如果僅設置testing
文件夾的路徑映射,則可以調試testing
文件夾中的任何代碼,並且沒有卷曲問題。 我顯然無法調試public_html
文件夾中的代碼,因為我尚未設置路徑映射。 當我設置的路徑映射兩個testing
和public_html
文件夾,我可以調試所有代碼,但任何貝哈特步驟定義包括水貂curl_exec()
調用該網站的本地URL,掛起少則3至10分鍾!
我的目標...
為了能夠在不curl_exec()
情況下運行curl_exec()
testing
調試test和public_html
文件夾中的所有php代碼。
我嘗試過的...
我已將PhpStorm調試最大同時連接數設置為10,並嘗試了20。
這是我的xdebug遠程配置設置:
xdebug.remote_addr_header => no value => no value
xdebug.remote_autostart => On => On
xdebug.remote_connect_back => Off => Off
xdebug.remote_cookie_expire_time => 3600 => 3600
xdebug.remote_enable => On => On
xdebug.remote_handler => dbgp => dbgp
xdebug.remote_host => host.docker.internal => host.docker.internal
xdebug.remote_log => no value => no value
xdebug.remote_mode => req => req
xdebug.remote_port => 9000 => 9000
以下所有原因均導致卷曲掛起:
xdebug.remote_autostart=0
並通過使用behat命令AND傳遞XDEBUG_CONFIG=idekey=PHPSTORM
環境變量來啟動Xdebug會話,並且
任何幫助是極大的贊賞!!
在遵循@LazyOne的建議之后,我更仔細地查看了Xdebug日志,並注意到在成功建立xDebug連接之后發生了掛起。 這導致我兩個可能的原因; 一些沒有在PhpStorm調試工具窗口中注冊的胭脂斷點,或者網站上的某些內容延遲了響應。
所以我做了以下事情:
1 Day
運行一次,因此將其切換為Never
。 我的想法可能是Drupal Cron的執行被卡住了並且沒有完成,因此每個HTTP請求都被掛起了。 它奏效了,現在我希望我分別測試了每個步驟,因為我不知道到底哪個是解決方案。 我傾向於#1,因為當我關閉PhpStorm中的調試時,Behat測試將立即執行。 無論哪種方式,如果您遇到類似的問題,請嘗試以上兩種方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.