0

我想将我的应用数据(股票)与实时数据同步。我正在使用 Yahoo API .. 这是我的代码 ..

       // $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。在这种情况下,您必须关闭安全模式,或限制脚本执行时间——例如,一次只处理一家公司,并为每家公司分别执行脚本。

既然你说你使用的是 CakePHP,我假设你的代码在用户请求的脚本中运行——这不是最好的设计,因为它实际上是一个服务脚本。最好将其作为 cron 作业php -f your_script.php(其中的max_execution_time 参数(它只会影响 php-cli 脚本)。

于 2011-07-16T19:45:18.517 回答