2012-08-22 25 views
3

我已經使用PHP的get_browser功能很長一段時間了,並且從未真正注意到我的任何網站上有任何延遲。但是,最近我注意到我的一個站點在服務器端加載的時間比應該花費的時間多一秒左右。我註釋掉了get_browser函數和立即加載的頁面。get_browser減慢頁面加載,任何替代?

這可能是我的服務器或是get_browser功能已知很慢嗎?該網站是我有一個在Windows服務器上運行的唯一網站,這可能是問題嗎?或者可以這樣做我的browscap.ini文件(這是每天更新從http://browsers.garykeith.com)?

如果沒有什麼我可以做的,以加快get_browser功能,有沒有其他的選擇呢?我需要可靠地收集關於瀏覽器的以下信息:

  1. 它是什麼瀏覽器,也就是瀏覽器,IE,Safari瀏覽器等
  2. 它是什麼版本(全稱),即10.1等
  3. 無論是是一個爬蟲或機器人

我不知道有任何其他方法從用戶代理收集此信息,它會更好地使用JavaScript(我寧願不是因爲我需要值服務器端)?

+0

我會去容易與大膽的文字。在你的問題中添加太多會導致閱讀困難。 – Blender

+0

你如何更新browsecap.ini? –

+0

@Blender注意到,對不起:-) –

回答

4

當我使用get_browser時,我也經歷了大約5秒的延遲,所以我還尋找另一種解決方案。

什麼的偉大工程,必將成爲最新的很長一段時間是在piwik一個lib:

0

本課將派上用場:http://chrisschuld.com/projects/browser-php-detecting-a-users-browser-from-php/。我在我的許多項目中使用它,它不使用get_browser,而是查看瀏覽器的useragent。我已經使用Windows Phone瀏覽器更新了我的版本,您可以從以下網址下載它:http://cl.ly/code/1V3E1k1G3B25

+0

這不是最新的,也不再存在。下載鏈接已打破:-( –

+0

我已更新我的答案,以包含我的版本,因此您可以下載它 – 2012-08-22 09:33:07

+0

這是一個很好的課程,我很感謝您的幫助,但由於這不是可靠的,所以它不夠可靠對於我來說,我不得不暫時訴諸使用解決方法,將會在+1分鐘內發佈,以獲得幫助 –

0

到目前爲止,我還沒有設法找到get_browser函數的合適替代方法,也沒有找到爲什麼它在我的Windows服務器上而不是在我的Linux上變慢。

目前我將應用基本的cookie解決方法。在第一次訪問我的網站時,我會將瀏覽器詳細信息存儲在cookie中,然後從之後檢索這些信息。這比現在使用get_browser功能更快。

如果任何人有任何其他的解決方案,請評論或張貼起來

+0

請您接受另一個答案,因爲這裏有一些更好的替代方案。 – ThaDafinser

0

目前PHP的全面的browscap.ini的大小大約爲10MB。對get_browser()或訪問該「數據庫」的其他方法的單個調用需要可觀的大量資源。

這就是爲什麼我改變了格式和導入數據到MySQL數據庫。我寫了兩個簡單的腳本,可以讓我在新的browscap.ini出來時輕鬆更新數據庫。第一個腳本從browscap.ini文件生成表結構 - 第二個腳本爲表格生成種子。 如果您對腳本感興趣,請在下面的評論中告訴我,我會爲您上傳。 他們充滿意大利麪,但他們的工作。

由於瀏覽器在會話期間不會改變,所以您應該從browscap.ini中僅從每個會話中取一次數據並存儲它。

+0

我很想看看你的腳本,你還有嗎? – Erick

+0

yup,今天晚上我會爲你上傳他們 – m02ph3u5

+0

謝謝。我看着解析browscap.ini,但它是一團糟,甚至使用csv版本 - fgetcsv – Erick