2010-12-17 7 views
1

私は、ユーザーにページを表示するためにXMLファイルを解析するトラフィックの多いサイトで作業しています。私は可能な限り既存のコードを最適化するプロセス、gzip、キャッシュコントロールなどを行っています。私はsimplexml_load_fileを使用してサーバーに不必要な負荷をかけている可能性があります。同じサーバー上にあるhttpのPHP simplexml_load_file?

ユーザーはドメイン(http://xml.domain.com/)でページを読み込み、XMLは同じ物理サーバー上のサブドメイン(http://xml.domain.com/)から取得します。私は現在、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"; 

Iは、Apache/2.2.3(CentOSの)、PHPバージョン5.2.6、およびPleskの8.6.0を実行しています:私は、様々なパスが無駄に変更しようとしています。私はmediatemple - (dv)サーバーでホスティングしています。ありがとう。

+0

私たちのホストは、FastCGIとしてPHPを実行することを推奨しています:http://wiki.mediatemple.net/w/DV:Run_PHP_as_FastCGI_and_resolve_Apache_permission_errors – willduder

答えて

1

同じディスク上にあればアクセスできます。 PHPファイルにXMLファイルへのアクセス権があることを確認してください。どんなことをしても、HTTP経由で呼び出さないでください。全く不必要な時間消費。

+0

PHPファイルとディレクトリは777です。どんなパーミッションの推奨事項がありますか? – willduder

+0

それは問題ではないかもしれません。あなたは「役に立たない」と言います。どういう意味ですか? 「見つからない」というエラーが表示されますか? – Jonah

+0

エラーなし、空の変数のみ。 – willduder

3

xmlファイルへのパスは、設定によって異なります。あなたはhttpで電話する必要はありません。しかし、xmlファイルにPHPコードが含まれている場合は、PHPインタプリタで手動で実行する必要があります。

スピードアップしたい場合は、各リクエストでこのxmlファイルを本当に解析する必要があるかどうか再考する必要があります。あなたの状況にもう少し依存します。 memcachedのようなものを使用して出力を数秒/分/時間キャッシュすることができます.HTML呼び出しを置き換えるだけの場合よりも良い結果が得られます。

+0

はい、defはXMLを解析する必要があります。内容は、1分ごとに頻繁に更新される静的XMLファイル(有効、PHPなし)です。 – willduder

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

0

XMLには、(svensが言ったように)解析する必要があるPHPが含まれていない限り、コードはうまくいかなければなりません。さらに、成功をテストする場合は、==ではなく、厳密な等価演算子===を使用してください。それはあなたの問題かもしれません。

+0

nopeでは、結果として得られる$ infoが空であることがテストによって確認されています。 – willduder

+0

'simple_xml_load_file()'と同じパスで 'file_get_contents()'を使うとどうなりますか? – prodigitalson

+0

同じものは、変数は空であり、エラーは報告されていません。 – willduder

関連する問題