web-dev-qa-db-ja.com

PHP

動画のメタデータを一括で変更するようにBrightcoveサーバーに大きなリクエストを出しています。 1000回の反復を経て停止したようです-タイムアウトが発生しないようにこのコードを調整するのを手伝ってくれる人はいますか?約7000/8000回の反復を行う必要があります。

<?php
include 'echove.php';

$e = new Echove(
    'xxxxx',
    'xxxxx'
);

// Read Video IDs
# Define our parameters
$params = array(
    'fields'         => 'id,referenceId'

);

# Make our API call
$videos = $e->findAll('video', $params);


    //print_r($videos);
    foreach ($videos as $video) {

        //print_r($video);
        $ref_id = $video->referenceId;
        $vid_id = $video->id;

        switch ($ref_id) {
            case "":
                $metaData = array(
                    'id' => $vid_id,
                    'referenceId' => $vid_id
                );

                # Update a video with the new meta data
                $e->update('video', $metaData);                
                echo "$vid_id updated sucessfully!<br />";
                break;
            default:
                echo "$ref_id was not updated. <br />";
                break;
        }
    }
?>

ありがとう!

19
Dave Kiss

set_time_limit() 関数を試してください。 set_time_limit(0)を呼び出すと、スクリプトの実行時間制限がなくなります。

39
bobdiaes

また、 ignore_user_abort() を使用して、ブラウザの中止をバイパスします。ブラウザを閉じてもスクリプトは実行され続けます(注意して使用してください)。

1
Billy

「ステータス:102処理中」をときどき送信してみて、ブラウザーがタイムアウトしないようにします(最善の策は15秒から30秒の間です)。リクエストが処理されたら、最終的なレスポンスを送信できます。

ブラウザはこれ以上この方法でタイムアウトするべきではありません。

0
Robidu