2010-12-17 13 views
1

我正在解析XML文件以向用戶顯示頁面的高流量網站上工作。我正在通過儘可能優化現有代碼的過程,gzip,緩存控制等等。我想我可能會用simplexml_load_file在服務器上施加不必要的壓力。當在同一臺服務器上時,通過http使用PHP simplexml_load_file?

用戶在域(http://xml.domain.com/)上加載頁面,並從同一物理服務器上的子域(http://xml.domain.com/)檢索XML。我目前使用使用simplexml_load_file所得$信息讓我拉特定需要的輸出就像這樣:

$url = "http://xml.domain.com/directory/file.xml"; 
$info = simplexml_load_file($url, 'SimpleXMLElement', LIBXML_NOCDATA); 

現在的問題是,如果這些XML文件是相同的物理服務器上,是有可能不使這些通過http調用?我曾嘗試多種不同的路徑變化都無濟於事:

$url = "/var/www/vhosts/domain.com/subdomains/xml/httpdocs/directory/file.xml"; 

我運行的Apache/2.2.3(CentOS的),PHP版本5.2.6和8.6.0的Plesk。我正在使用mediatemple - 一個(dv)服務器。謝謝。

+0

我們的主機推薦將PHP作爲FastCGI運行:http://wiki.mediatemple.net/w/DV:Run_PHP_as_FastCGI_and_resolve_Apache_permission_errors – willduder 2010-12-20 21:28:44

回答

1

如果它位於同一磁盤上,您可以訪問它。只要確保PHP文件有權訪問XML文件。無論你做什麼,都不要通過HTTP調用它;完全不需要時間消耗。

+0

PHP文件和目錄是777 - 不行。任何建議什麼權限可能會出現重擊? – willduder 2010-12-17 23:49:01

+0

那可能不是問題。你說「無濟於事」。你什麼意思?你有沒有找到錯誤? – Jonah 2010-12-17 23:54:48

+0

沒有錯誤,只是一個空的變量。 – willduder 2010-12-18 00:53:12

3

xml文件的路徑取決於您的設置。你不需要通過http進行呼叫。但是,如果您的xml文件包含PHP代碼,則需要手動通過PHP解釋器運行它。

如果你想加快速度,你應該重新思考一下,如果你確實需要在每個請求中解析這個xml文件。再次取決於你的情況。你可以使用像memcached這樣的緩存輸出幾秒/分鐘/小時,你可能會得到比只替換http調用更好的結果。

+0

是的,def需要解析XML。內容是靜態的XML文件(有效的,沒有PHP),每分鐘更新一次。 – willduder 2010-12-17 23:40:13

0

就我個人而言,我從SimpleXML衍生到DOMDocument。

可以使用

 
$xmldoc = new SimpleXMLElement(file_get_contents($file)); 
//or 
$xmldoc = new DOMDocument(); 
$xmldoc->loadXML(file_get_contents($file); 

權限是一個問題,那麼如果你是監獄/ suexec的-ED的。

0

應該沒有理由不能使用文件系統路徑 - 除了文件權限。

+0

任何想法什麼文件權限可能是錯的? XML和PHP都在777. – willduder 2010-12-18 01:16:54

0

你的代碼應該沒問題,除非XML中有需要解析的php(如svens所說)。此外,如果您正在測試成功,請確保您使用嚴格的相等運算符===而不是==。這可能是你的問題。

+0

nope進行了測試,測試顯示$ info只是空的。 – willduder 2010-12-17 23:43:04

+0

如果您使用'file_get_contents()'與您提供給'simple_xml_load_file()'的相同路徑,會發生什麼情況。 – prodigitalson 2010-12-17 23:50:10

+0

同樣的事情,變量是空的,沒有錯誤報告。 – willduder 2010-12-18 00:52:47

相關問題