ホームページ バックエンド開発 PHPチュートリアル php-simple-html-dom-parser の使用時に発生した問題

php-simple-html-dom-parser の使用時に発生した問題

Aug 08, 2016 am 09:29 AM
com localhost socket xdebug

今日はこのツールを使用しました:

https://github.com/sunra/php-simple-html-dom-parser

まず、組み込みの php-simple-html- を使用しました。テストケースの dom-parser slick_test.php がエラーを報告したので、Baidu ホームページをキャプチャするための最も単純な 3 行のコードを書きました:

<code><span><span><?php</span><span>require</span><span>'./simplehtmldom_1_5/simple_html_dom.php'</span>;
<span>$html</span> = file_get_html(<span>'http://www.baidu.com/'</span>);

<span>//找到所有图片 </span><span>foreach</span>(<span>$html</span>->find(<span>'img'</span>) <span>as</span><span>$element</span>) 
       <span>echo</span><span>$element</span>->src . <span>'<br>'</span>;


  <span>//找到所有链接 </span><span>foreach</span>(<span>$html</span>->find(<span>'a'</span>) <span>as</span><span>$element</span>) 
       <span>echo</span><span>$element</span>->href . <span>'<br>'</span>;</span></span></code>
ログイン後にコピー

結果は次のとおりです:

<code>andy@AndyMacBookPro:/usr/<span>local</span>/webdata/github/php-simple-html-dom-parser/Src/Sunra/PhpSimple$ php andy.php<span>
//www.baidu.com/img/baidu_jgylogo3.gif<br>//www.baidu.com/img/bd_logo.png<br>http://s1.bdstatic.com/r/www/cache/static/global/img/gs_237f015b.gif<br>//www.baidu.com/gaoji/preferences.html<br>/<br>https://passport.baidu.com/v2/?login&tpl=mn&u=http%3A%2F%2Fwww.baidu.com%2F<br>https://passport.baidu.com/v2/?reg&regType=1&tpl=mn&u=http%3A%2F%2Fwww.baidu.com%2F<br>/<br>http://news.baidu.com/ns?cl=2&rn=20&tn=news&word=<br>http://tieba.baidu.com/f?kw=&fr=wwwt<br>http://zhidao.baidu.com/q?ct=17&pn=0&tn=ikaslist&rn=10&word=&fr=wwwt<br>http://music.baidu.com/search?fr=ps&key=<br>http://image.baidu.com/i?tn=baiduimage&ps=1&ct=201326592&lm=-1&cl=2&nc=1&word=<br>http://v.baidu.com/v?ct=301989888&rn=20&pn=0&db=0&s=25&word=<br>http://map.baidu.com/m?word=&fr=ps01000<br>http://wenku.baidu.com/search?word=&lm=0&od=0<br>//www.baidu.com/more/<br>javascript:;<br>javascript:;<br>javascript:;<br>http://w.x.baidu.com/go/mini/8/10000020<br>http://news.baidu.com<br>http://www.hao123.com<br>http://map.baidu.com<br>http://v.baidu.com<br>http://tieba.baidu.com<br>https://passport.baidu.com/v2/?login&tpl=mn&u=http%3A%2F%2Fwww.baidu.com%2F<br>//www.baidu.com/gaoji/preferences.html<br>//www.baidu.com/more/<br>http://news.baidu.com<br>http://tieba.baidu.com<br>http://zhidao.baidu.com<br>http://music.baidu.com<br>http://image.baidu.com<br>http://v.baidu.com<br>http://map.baidu.com<br>javascript:;<br>javascript:;<br>javascript:;<br>http://baike.baidu.com<br>http://wenku.baidu.com<br>http://www.hao123.com<br>//www.baidu.com/more/<br>/<br>//www.baidu.com/cache/sethelp/index.html<br>http://home.baidu.com<br>http://ir.baidu.com<br>/duty/<br>create_debugger_socket("localhost", 9000) socket: Too many open files</span>
create_debugger_socket(<span>"localhost"</span>, <span>9000</span>) <span>socket</span>: Too many <span>open</span><span>files</span>
create_debugger_socket(<span>"localhost"</span>, <span>9000</span>) <span>socket</span>: Too many <span>open</span><span>files</span>
create_debugger_socket(<span>"localhost"</span>, <span>9000</span>) <span>socket</span>: Too many <span>open</span><span>files</span>
create_debugger_socket(<span>"localhost"</span>, <span>9000</span>) <span>socket</span>: Too many <span>open</span><span>files</span>
create_debugger_socket(<span>"localhost"</span>, <span>9000</span>) <span>socket</span>: Too many <span>open</span><span>files</span>
create_debugger_socket(<span>"localhost"</span>, <span>9000</span>) <span>socket</span>: Too many <span>open</span><span>files</span>
create_debugger_socket(<span>"localhost"</span>, <span>9000</span>) <span>socket</span>: Too many <span>open</span><span>files</span>
create_debugger_socket(<span>"localhost"</span>, <span>9000</span>) <span>socket</span>: Too many <span>open</span><span>files</span>
create_debugger_socket(<span>"localhost"</span>, <span>9000</span>) <span>socket</span>: Too many <span>open</span><span>files</span>
create_debugger_socket(<span>"localhost"</span>, <span>9000</span>) <span>socket</span>: Too many <span>open</span><span>files</span>
create_debugger_socket(<span>"localhost"</span>, <span>9000</span>) <span>socket</span>: Too many <span>open</span><span>files</span>
create_debugger_socket(<span>"localhost"</span>, <span>9000</span>) <span>socket</span>: Too many <span>open</span><span>files</span>
create_debugger_socket(<span>"localhost"</span>, <span>9000</span>) <span>socket</span>: Too many <span>open</span><span>files</span>
create_debugger_socket(<span>"localhost"</span>, <span>9000</span>) <span>socket</span>: Too many <span>open</span><span>files</span>
create_debugger_socket(<span>"localhost"</span>, <span>9000</span>) <span>socket</span>: Too many <span>open</span><span>files</span>
create_debugger_socket(<span>"localhost"</span>, <span>9000</span>) <span>socket</span>: Too many <span>open</span><span>files</span>
create_debugger_socket(<span>"localhost"</span>, <span>9000</span>) <span>socket</span>: Too many <span>open</span><span>files</span>
create_debugger_socket(<span>"localhost"</span>, <span>9000</span>) <span>socket</span>: Too many <span>open</span><span>files</span>
create_debugger_socket(<span>"localhost"</span>, <span>9000</span>) <span>socket</span>: Too many <span>open</span><span>files</span>
andy@AndyMacBookPro:/usr/<span>local</span>/webdata/github/php-simple-html-dom-parser/Src/Sunra/PhpSimple$</code>
ログイン後にコピー

このエラー:

create_debugger_socket("localhost", 9000 ) ソケット: 開いているファイルが多すぎます

ソケット接続がどこで使用されているのかわかりません。 ?

%%%%%%%%%%%%%%%%%%%%%%%%%%%
これで、このように完了しました。まず、問題が発生したphpをデバッグして、問題が何であるかを確認したいと思いました。次に、MacGDBPをオンにしました。MacGDBpをオンにした後、エラーは報告されないことがわかり、ポート9000を思い出しました。これは xdebug Debug ポートに相当するものなので、いくつかアイデアがあります。xdebug に問題がある可能性があります。そして、オンラインでこれを参照します:

http://bugs.xdebug.org/view.php?id=1070

こちらを参照してください:

  • /php.ini がインストールされました
  • xdebug.remote_log = /tmp/xdebug_remote.log
その後、実行を続けてエラーが発生し続けましたが、これは /tmp で確認できます。 /xdebug_remote.log ファイル エラー ログ:

<code><span>16</span> Log opened <span>at</span><span>2015</span>-<span>02</span>-<span>20</span><span>03</span>:<span>48</span>:<span>29</span><span>17</span> I: Connecting <span>to</span> configured address/port: localhost:<span>9000.</span><span>18</span> E: Could <span>not</span> connect <span>to</span> client. :-(
  <span>19</span> Log closed <span>at</span><span>2015</span>-<span>02</span>-<span>20</span><span>03</span>:<span>48</span>:<span>29</span></code>
ログイン後にコピー
さて、ローカルホスト:9000 のソケット ポートに接続できないことはわかっています。これは、ローカルで MacGDBP が有効になっていないためです。 php.ini で xdebug に移動すると:

<code>xdebug<span>.remote</span>_enable = on
xdebug<span>.remote</span>_handler = dbgp
xdebug<span>.remote</span>_host = localhost
xdebug<span>.remote</span>_port = <span>9000</span>
xdebug<span>.remote</span>_autostart = <span>1</span></code>
ログイン後にコピー
xdebug.remote_autostart が 1 に設定されている場合、つまり自動的にオンになっている場合、ポート 9000 のソケット接続を開くように直接要求されます。エラーが報告されます。それが理由です :-)。

このログ ファイルの出力は非常に大きいため、xdebug.remote_log をオフにできます。つまり、

<code>xdebug.<span>remote_enable = on</span>
xdebug.<span>remote_handler = dbgp</span>
xdebug.<span>remote_host = localhost</span>
xdebug.<span>remote_port = 9000</span>
xdebug.<span>remote_autostart = 1</span>
;xdebug.<span>remote_log = /tmp/xdebug_remote.log</span></code>
ログイン後にコピー
セミコロンを追加すれば問題ありません。

上記は、php-simple-html-dom-parser を使用する際に発生する問題を内容も含めて紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

mysql がローカルホストに接続できないのはなぜですか? mysql がローカルホストに接続できないのはなぜですか? Aug 10, 2023 pm 02:55 PM

mysql が localhost に接続できない理由は、mysql サービスが開始されていないこと、mysql ポートが占有されていること、および MySQL 設定ファイルに問題があることです。詳細な紹介: 1. Windows システムでは、コマンド プロンプトで「services.msc」と入力してサービス マネージャーを開き、mysql サービスを見つけて、そのステータスが「実行中」であることを確認します。 Linux システムでは、「services.msc」コマンドを使用してサービスの状態を確認および制御できます。2. open コマンドなどを使用できます。

紅夢ネイティブアプリケーションのランダムな詩 紅夢ネイティブアプリケーションのランダムな詩 Feb 19, 2024 pm 01:36 PM

オープン ソースの詳細については、次のサイトを参照してください。 51CTO Honmeng 開発者コミュニティ https://ost.51cto.com 実行環境 DAYU200:4.0.10.16SDK: 4.0.10.15IDE: 4.0.600 1. アプリケーションを作成するには、[ファイル] をクリックします。 >新しいファイル ->プロジェクトの作成。テンプレートを選択します: [OpenHarmony] EmptyAbility: プロジェクト名 shici、アプリケーション パッケージ名 com.nut.shici、およびアプリケーションの保存場所 XXX (中国語、特殊文字、スペースは含まれません) を入力します。 CompileSDK10、モデル: ステージ。デバイス

PHP+SocketシリーズのIO多重化とWebサーバーの実装 PHP+SocketシリーズのIO多重化とWebサーバーの実装 Feb 02, 2023 pm 01:43 PM

この記事では、php+socket に関する関連知識を提供します。主に IO 多重化と php+socket が Web サーバーを実装する方法を紹介します。興味のある方は以下をご覧ください。皆様のお役に立てれば幸いです。

localhost を開けない場合はどうすればよいですか? localhost を開けない場合はどうすればよいですか? Nov 07, 2023 pm 02:47 PM

解決策: 1. サーバーの実行ステータスをチェックし、サーバーが正しいポートでリッスンしていることを確認します。 2. ファイアウォールまたはセキュリティ ソフトウェアを一時的に無効にして、再度 localhost にアクセスしてみます。 3. サーバーの hosts ファイルを確認します。オペレーティング システムを変更してローカルホストが正しく解決されていることを確認します。 4. ネットワーク アダプターを再起動するか、ネットワーク接続を再構成してみます。 5. ローカル サーバーが使用するポートを変更するか、同じポートを占有している他のプログラムを閉じてみます。 6. 試してください。対応する IP アドレスとドメイン名をホスト ファイルなどに手動で追加します。

Pythonのsocketとsocketserverの使い方 Pythonのsocketとsocketserverの使い方 May 28, 2023 pm 08:10 PM

1. TCP プロトコルに基づくソケット プログラミング 1. ソケット ワークフローはサーバー側から始まります。サーバーはまずソケットを初期化し、次にポートにバインドし、ポートをリッスンし、accept を呼び出してブロックし、クライアントが接続するのを待ちます。このとき、クライアントがSocketを初期化してからサーバーに接続(connect)すると、接続に成功するとクライアントとサーバー間の接続が確立されます。クライアントがデータ リクエストを送信し、サーバーがリクエストを受信して​​処理し、次に応答データをクライアントに送信し、クライアントがデータを読み取り、最後に接続を閉じます。インタラクションは終了します。インタラクションを実装するには、次の Python コードを使用します。 :インポートソ

Linuxのローカルホストとはどういう意味ですか? Linuxのローカルホストとはどういう意味ですか? Mar 14, 2023 am 09:53 AM

linux localhost は、「コンピュータのホスト名」を意味します。ホスト名は、ネットワーク上の独立したコンピュータを識別するために使用されます。「root@localhost」の root は、現在ログインしているユーザーを表します。Linux では、管理者アカウントは root であり、ユーザーは root ユーザーとして Linux マシンにログインします。

Spring Boot + Vue を使用してソケット通知プッシュを実装する方法 Spring Boot + Vue を使用してソケット通知プッシュを実装する方法 May 27, 2023 am 08:47 AM

SpringBoot 側の最初のステップは依存関係を導入することです。まず、WebSocket に必要な依存関係と、出力形式 com.alibabafastjson1.2.73org.springframework.bootspring-boot-starter-websocket を処理するための依存関係を導入する必要があります。 2 番目のステップは、WebSocket 構成クラス importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Config を作成することです。

comcn と com はどう違いますか? comcn と com はどう違いますか? May 12, 2023 pm 04:08 PM

comcn と com の違い: 1. comcn と com には意味の違いがありますが、アクセス速度に違いはありません; 2. comcn は国際ドメイン名であり、次のユーザーが使用するグローバル トップレベル ドメイン名です。商業機関、cn は中国企業のドメイン名、国内商業機関、国内ドメイン名、企業のみが登録可能; 3. 検索の優先順位は、cn が最初に .cn を検索することです。.cn サーバーが見つかった後、.cnサーバーは .com を検索します; 4. cn は cnnic China Internet Center Management によって提供されており、com の管理組織は海外にあります。

See all articles