昨天為了解決guzzle的不知道為啥不會動的問題,結果一連踩了兩個坑,稍微記錄一下吧
=======
一般的PHP是無法下斷點除錯的,
常見的方法是在editer或ide裝xdebug的插件。
我通常使用vscode
基本上這個影片說得很清楚
先去xampp/apache/htdocs存入
執行了phpinfo()這行的檔案
然後把全部複製下來
接著去xdebug.org/wizard貼上
下載他的dll檔案
放進去該放的地方
然後打開php.ini去設定
基本上照著影片上的輸入
但要注意的是
請加上這行
xdebug.client_port = 9003
接著去Vscode的執行按下新增組態
然後他就會跑出一個.vscode 的設定檔
裡面有launch.json
要注意的是剛剛設定預設的port是9003需要與這裡的port相同
接著按下xdebug
然後執行你的PHP程式
不管是框架或是什麼都可以使用
按下斷點 接著就跟習慣的模式相同
=====
接著我終於可以下斷點了
跑著跑著發現
阿 結果是在guzzlehttp發post給我自己的時候
不曉得為什麼一直無止境的重複呼叫同樣的幾個函式
我左思右想,看了看教學
發現教學都使用了已經設定好的domain
查了一下"guzzlehttp localhost"找到了這篇
原來問題出在localhost,又或者說問題出在我執行時起的服務是使用php artisan serve的指令
在使用guzzlehttp 發送到localhost要注意一點
由於使用php artisan serve開啟的服務是單執行序的
所以要再使用php artisan serve --port=8001 開啟另一個服務去接收自己發給自己的請求
否則將會陷入無止境的等待
=====
我為了解下面這個問題 所以我找了debugger 然後又有上面的問題
然後解決了之後我才想到
我看的教學都是有domain的
該不會是因為我打給自己
結果一查 guzzle localhost 真的是因為我起的服務是單執行緒
所以我會等我的第一條request回來
然後我要發的request一直等不到執行的奇怪bug