2013-12-09 38 views
0

我正在構建一個網站,並希望提供公共API,以避免註冊everobody。 api將執行搜索功能,並且由於數據庫很大,它將消耗大量資源。所以我想嚴格限制內存,處理時間等。此外,我將使用公共託管(非個人或專用),所以我不會有任何訪問過程控制(我想)。你推薦做什麼?PHP腳本性能控制

我想使用一個全局變量來存儲上次成功的腳本執行時間,如果enquery超過1秒,將會終止腳本。我無法找到超級全局(跨所有腳本)變量,因此將使用帶鎖的文件。

但無論如何,任何PHP腳本執行控制?

+1

你有沒有考慮緩存...你應該想到的數據庫索引以及如果你的API的將是向公衆開放的鏈接,你還應該確保你沒有得到任何垃圾郵件或SQL注入..所以要麼創建api密鑰或想到某種形式的驗證碼。 –

+0

搜索是通過索引,但它是接近20K行。數據庫很好。 Sql注入將被阻止,因爲只有簡單的單詞被允許進行搜索。垃圾郵件 - 沒有理由如何使用它。我不認爲API密鑰,但無論如何,我會有同樣的問題:「如何限制」 – Tigran

+0

你有沒有做過任何性能測試?你怎麼知道你的查詢需要很長時間和/或消耗內存?對於MySQL來說,20K行不是「大」,除非你的設計非常糟糕,包含數百列,沒有索引,低效的列類型等。 – Dave

回答

3

我想你可以通過設置memory_limit和最大執行時間,通過全局配置中的php_ini或腳本內的ini_set()來控制它。

下面是php的配置文件手動

PHP configuration file

+0

它可以只設置爲1個腳本,還是會影響所有內容? – Tigran

+1

啊,好點。它會影響一切。試試這個:http://hk2.php.net/ini_set 上面的答案提到了ini_set()..我建議你看看詳細提供的答案,以便在不犧牲幫手資源的情況下從中受益:)而且你應該肯定他的答案是正確的! –