2011-07-16 162 views
0

我想同步我的應用程序數據(股票)與活的。我使用雅虎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

您可以使用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腳本)。

+0

當用戶在瀏覽器中打開頁面(腳本URL)時。與cron作業相反 - 當cron調度程序請求腳本URL時。 – lxa

+0

你可以告訴我用戶請求的腳本是什麼意思?我的理解是...因爲我已經在控制器內編寫代碼,所以它將利用所有mvc資源和所有這一切,另一方面,如果我編寫簡單的php腳本,那麼它將是輕量級的服務器腳本,並且佔用更少的時間和資源mvc之一.. M我正確嗎? – anasanjaria

+0

我已經創建了一個普通的php腳本,並且會像我的記錄一樣多次訪問數據的雅虎api ...所以這是一個好方法嗎? – anasanjaria