2017-01-21 51 views
2

我的腳本從命令行運行,在循環內部進行大量數據庫和API調用,但爲了測試我必須更改條件並放置die()並反覆運行腳本。使用PHP的斷點

有沒有什麼辦法可以在按下Return時提前迭代,按Esc就結束腳本執行,否則只要等到它發生以上輸入事件?

$arr = range(0, 10000); 

foreach ($arr as $n) { 
    // if ENTER 
    echo $n; 
    // elseif ESC 
    die() 
    // else 
    // wait for ENTER or ESC 
} 
+0

您可以在循環中放置error_log()或嘗試捕獲並記錄異常以查看發生了什麼。如果這是您通過在事件發生時暫停代碼來實現的目標。其他方式可以使用IDE等XDebug,您可以在代碼中放置一個斷點並逐行執行。 – mrjamesmyers

+0

@mrjamesmyers不,不是錯誤,只是執行。因此,每次迭代我需要檢查一切是否正常,按ENTER,進入下一個...等等。 – 3zzy

+0

您可以使用XDebug實現該功能,該工具可以配置爲與NetBeans,Notepad ++和許多其他IDE /編輯器(或者PHPStorm或Zend Studio,但必須爲它們付費)配合使用。其他方面可以在JavaScript中執行foreach循環,然後聽取Enter Key按下並增加索引,然後使用Ajax發佈到PHP – mrjamesmyers

回答

0

有點遲到這個問題,但這裏有一個方法可以使用。唯一的缺點是它不能按要求正常工作。要繼續循環,請按輸入鍵。要退出循環,必須鍵入exit,然後按輸入鍵。

<?php 

$arr = range(0, 10000); 
$handle = fopen ("php://stdin","r"); 

foreach ($arr as $n) { 
    $line = fgets($handle); 

    // if user types "exit" and ENTER 
    if (trim($line) == "exit") { 
     die(); 
    } 

    echo $n; 

    // Do DB and API calls here 

}