2017-07-10 17 views
1

私は、テキストファイルからリンクリストにアクセスするのにwgetを使用します。リンクの例は次のようになりますWGET-ERROR 414:Request-URI Too Large

http://localhost:8888/data/test.php?value=ABC123456789 

PHPファイルの応答が別のテキストファイルに付加される元の情報とテーブルを返します。このエラーについては、文字制限を超えているため現在URLの量を処理できないことは明らかです。 2つのURLのみを使用すると、正常に動作します。

テキストファイルには合計10,000のURLが含まれています。私が使っているコマンドは次のとおりです。

wget -i /Applications/MAMP/htdocs/data/URLs.txt -O - >> /Applications/MAMP/htdocs/data/append.txt 

私の研究によると、「修正」これはLimitRequestLineまたはそれが存在しない場合は、それを追加することを変更することですへの迅速な道。

オープン/Applications/MAMP/conf/apache/httpd.confそしてAccessFileName .htaccessの下に挿入します:私は、私がやったこと(MacOSのための)MAMPをして使用するので

LimitRequestLine 1000000000 
LimitRequestFieldSize 1000000000 

をしかし、私はまだ同じエラーを取得します。なぜこのようなことが起こるのか分かりません。

cURLを使いやすくすることができますか?はいの場合、同様のコマンドは何でしょうか?

+0

あなたはfile_get_contents&file_put_contents、またはfgetcsv&fputcsv ...を試すことができます巨大なデータセットを処理します。 – Gunnrryy

+0

@Gunnrryyはターミナルからこれを行うことができますか? –

+0

あなたはあなたのPHPスクリプトでこれらを実装し、ターミナルからPHPスクリプトを実行する必要があります。 file_get_contents&othersはPHPのネイティブ関数です。 – Gunnrryy

答えて

3

あなたの414: Request-URI Too LargeエラーはURLの量とは無関係であり、いいえ、カールを使用すると役立ちません。

問題は、あなたのURLの一部(または1つ)が目的のサーバーにとって長すぎてエラーが発生することです。

あなたはおそらく

cat URLs.txt | awk '{print length, $0}' | sort -nr | head -1 

を行うことによって、エラーの原因(そのコマンドのhttps://stackoverflow.com/a/1655488/1067003のおかげで)URLを識別することができ

別の原因は、あなたが適切なURLでライン終端していないということですURLs.txt、およびいくつかのURL(またはそれらのすべて?)が連結されます。レコードの場合、終端文字は "\ n"、別名は16進コード0Aです - ほとんどのウィンドウエディタが使用する\ r \ nではなく、wgetがそのような不正な形式の行終端文字をどのように扱うかはわかりません

ロード中の.HTMLファイル(またはその他の圧縮可能ファイル)をダウンロードしている場合、curlは--compressed引数を持つ圧縮転送をサポートしています(gzipdeflateを使用しています)。 wgetは圧縮をまったくサポートしておらず、HTMLは非常によく圧縮されます(gzipで圧縮されていないバージョンよりも簡単に5〜6倍小さく)

+0

ありがとう@hanshenrik!ターミナルでコードを実行すると、リストの最後のURL(http:// localhost:8888/data/test.php?value = ABC9999999995660005')が返されます。ご覧のとおり、最後のパラメータは 'ABC999999999'で、最後に' 5660005'が追加されています。これでどうしたらいいですか? –

+0

こんにちは@hanshenrik。エクスポートフォーマットを** Windows Formatted Text(.txt)**に変更しました。**は私の魅力を気に入っていました。同時接続を同時に開くことでスピードアップできますか?おそらく何らかの 'xargs'を使っているでしょうか?これは本当に私を助けてくれる最後の部分です! –

+0

@AvaBarbillaはいできます。おそらく 'cat URLs.txt | xargs --max-proc = 10 $(どのwget) ' – hanshenrik

関連する問題