我希望将我的应用数据(库存)与实时数据同步。我正在使用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框架。
答案 0 :(得分:0)
您可以使用set_time_limit
function:
if(!ini_get('safe_mode') ) {
set_time_limit(120);
}
但是,如果PHP处于安全模式,它将无法工作(请参阅if
)。在这种情况下,您必须关闭安全模式或限制脚本执行时间 - 例如,一次只处理一个公司,并为每个公司单独执行脚本。
既然你说你正在使用CakePHP,我认为你的代码是在用户请求的脚本中运行的 - 这不是最好的设计,因为它实际上是一个服务脚本。最好将它作为一个cron作业运行(php -f your_script.php
) - 在这种情况下,使用不同的php配置文件(通常是/etc/php5/cli/php.ini),如果你有访问/权限编辑它 - 更改其中的max_execution_time parameter(它只会影响php-cli脚本)。