2010-11-18 115 views
0

我有一個使用MySQL的網站。我使用一個名爲「People」的表,每行代表顯然是一個人。當用戶進入一個頁面時,我想介紹與該人相關的新聞(以及來自MySQL表格的信息)。爲此,我決定使用BING新聞源API。獲取多個URL並使用PHP腳本更新數據庫

調用每個頁面加載的BING API的方法的問題是,我正在增加我的頁面的加載時間(對於BING服務器的四捨五入)。因此,我決定預先取得所有新聞並將其保存在名爲「新聞」的彩色表中。

由於我的表格包含5,000多人,因此運行PHP腳本爲每個人下載所有消息並立即更新表格,結果爲Fatal error: Maximum execution time(我不想禁用超時,因爲這是一個很好的安全措施) 。

運行這樣一個腳本的好方法是什麼?我知道我可以每5分鐘運行一次cron作業,每次只更新一部分行,但即使在這種情況下,保存當前偏移量的最佳方法是什麼?我應該保存在MySQL中的偏移量,還是作爲服務器var?

回答

1
  • 使用的cronjob複雜的工作
  • 如果您打算爲的cronjob運行,你應該增加超時(你是從其他網站拉東西,不是爲了公共)
  • 考慮創建一個主腳本(通過觸發cronjob),並且這個主腳本會產生多個子腳本(有一定的控制權),這樣你就可以從BING新聞源(從中可以多次下載5000多個配置文件)中提取數據,而無需一一下載,一個按順序(想批處理)

更新

Cron是Unix類計算機操作系統中基於時間的作業調度程序。名字c​​ron來自「chronos」一詞,希臘語來自「時間」。 Cron使用戶能夠安排作業(命令或shell腳本)在特定時間或日期定期運行。它通常用於自動化系統維護或管理,儘管它的通用性意味着它可以被用於其他目的,例如連接到互聯網並下載電子郵件

Cron - on Wiki

+0

謝謝!是否有可能只增加這些腳本的超時時間,而所有其他的PHP都會有默認的超時時間? – Joel 2010-11-18 09:51:36

+0

Spawn php程序不是指include或require,而是直接調用PHP來運行腳本。含義每個產卵過程都使用他們自己的默認超時。請參考這裏:http://stackoverflow.com/questions/45953/php-execute-a-background-process – ajreal 2010-11-18 09:56:57

+0

哦,好的抱歉。我知道了。你的建議不要通過Apache(它具有超時限制)將其作爲腳本運行,而是作爲Linux中的PHP進程運行。謝謝! – Joel 2010-11-18 10:04:55

1

爲什麼不通過AJAX加載頁面的新聞部分?這意味着頁面的其餘部分會很快加載,並且等待BING所產生的延遲只會影響新聞部分,您可以分配一個加載佔位符。

將數據存儲在數據庫中聽起來不像是非常高效/實用的解決方案,單獨對記錄進行持續管理可能會導致未來頭痛。

+0

晴SEO的原因。我認爲SE蜘蛛可能會忽略這種內容...... – Joel 2010-11-18 09:49:58

+0

嗯,是的,你需要迎合這一點。也就是說,如果你的AJAX調用結構正確,它應該沒問題。看到這裏(谷歌):http://code.google.com/web/ajaxcrawling/docs/getting-started.html – SW4 2010-11-18 09:53:29

+0

@joel ..只有當用戶登錄正確時才顯示新聞?那麼Wats在索引新聞項目的搜索引擎中的重點呢? – Shoban 2010-11-18 09:55:01

相關問題