0

アプリのデータ(ストック)をライブのデータと同期させたい。私はYahooAPIを使用しています..これが私のコードです..

       // $companyInfo ; holds company information like symbol 

        foreach($companyInfo as $singleCompany)
        {
            $feedUrl = 'http://finance.yahoo.com/d/quotes.csv?s='.$singleCompany['Company']['Symbol'].'&f=l1c6gho&e=.csv';

            $handle = fopen($feedUrl, "r");

            $liveCompanyData = fgetcsv($handle);  
            if(!empty($liveCompanyData) && isset($liveCompanyData))
            { 
                      /***  here I parse data n save it in db ***/
            }
           fclose($handle);

        }

上記のコードは、小さなデータセット(つまり、約30のレコード)で機能し、長いレコードセットでは、Maximum execution time of 60 seconds exceeded in ..... どうすればそれを実行できますか?

注:私はcakephpフレームワークを使用しています。

4

1 に答える 1

0

あなたはset_time_limit関数を使うことができます:

if(!ini_get('safe_mode') ) { 
    set_time_limit(120); 
} 

ただし、PHPがセーフモードの場合は機能しません(それを参照if)。その場合、セーフモードをオフにするか、スクリプトの実行時間を制限する必要があります。たとえば、一度に1つの会社のみを処理し、会社ごとにスクリプトを実行します。

また、CakePHPを使用していると言っているので、コードはユーザーが要求したスクリプトで実行されていると思います。これは実際にはサービススクリプトであるため、最適な設計ではありません。cronジョブとして実行することをphp -f your_script.phpお勧めします()-この場合、別のphp構成ファイルが使用され(通常は/etc/php5/cli/php.ini)、編集するためのアクセス/特権がある場合は変更しますその中のmax_execution_timeパラメーター(php-cliスクリプトにのみ影響します)。

于 2011-07-16T19:45:18.517 に答える