簡體   English   中英

啟用Xdebug時如何修復curl_exec調用掛起

[英]How to fix curl_exec call hanging when Xdebug is enabled

我已經設置了本地ddev (基於dockerPHP Drupal 7開發環境。 我已經使用Behat Drupal Extension為該站點設置了Behat測試。

所有Behat上下文文件和關聯的composer供應商文件夾都位於站點的Web根目錄之外的測試文件夾中。 文件夾結構如下所示:

  • 項目

    • 測試

    • public_html

我啟用了xdebug並使用PhpStorm 我已經設置了PhpStorm調試服務器並提供了正確的路徑映射。

通過瀏覽器調試php代碼效果很好,調試CLI命令效果很好。 當我嘗試通過CLI運行Behat測試時嘗試調試所有代碼時,會發生我的問題。

在PhpStorm PHP服務器配置中,如果僅設置testing文件夾的路徑映射,則可以調試testing文件夾中的任何代碼,並且沒有卷曲問題。 我顯然無法調試public_html文件夾中的代碼,因為我尚未設置路徑映射。 當我設置的路徑映射兩個testingpublic_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會話,並且
    • 不要在curl調用中傳遞任何cookie或GET參數。
    • 通過curl調用傳遞與cookie和GET參數相同的idekey
    • 通過curl調用傳遞不同的idekey作為cookie和GET參數

任何幫助是極大的贊賞!!

在遵循@LazyOne的建議之后,我更仔細地查看了Xdebug日志,並注意到在成功建立xDebug連接之后發生了掛起。 這導致我兩個可能的原因; 一些沒有在PhpStorm調試工具窗口中注冊的胭脂斷點,或者網站上的某些內容延遲了響應。

所以我做了以下事情:

  1. 刪除了應用程序中的所有PhpStorm調試斷點,然后重新啟動了PhpStorm。
  2. 實現了Drupal 7 Configuration中的Automatic Cron設置被設置為每1 Day運行一次,因此將其切換為Never 我的想法可能是Drupal Cron的執行被卡住了並且沒有完成,因此每個HTTP請求都被掛起了。

它奏效了,現在我希望我分別測試了每個步驟,因為我不知道到底哪個是解決方案。 我傾向於#1,因為當我關閉PhpStorm中的調試時,Behat測試將立即執行。 無論哪種方式,如果您遇到類似的問題,請嘗試以上兩種方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM