2017-01-21 5 views
2

私のスクリプトはコマンドラインから実行していますが、ループ内でたくさんのDB呼び出しと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()を配置するか、catchとlog例外を試して、何が起きているのかを確認できます。それがイベントが発生した場合にコードを一時停止することによって達成しようとしているものです。別の方法として、XDebugなどのIDEを使用して、コードにブレークポイントを配置し、行単位でステップ実行することができます。 – mrjamesmyers

+0

@mrjamesmyersいいえ、エラーではなく、実行するだけです。だから私は、すべての問題がないかどうかを確認し、ENTERを押して、次のページに進みます。 – 3zzy

+0

NetBeans、Notepad ++、他の多くのIDE/Editors(またはPHPStormやZend Studioでも使えますが、支払いが必要です)で動作するように設定できるXDebugを使用すれば、これを達成できます。他の賢明なJavaScriptでforeachループを行うことができますEnterキーを押してインデックスをインクリメントし、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 

} 
関連する問題