1

ファイルにテキストを書き込む必要があるコンソール PHP アプリケーションがあります。テキストのこのサイズが 130999 バイトを超える場合、データは書き込まれません。

$line = '';
for ( $i=0 ; $i<130991 ; $i++ ) {
    $line .= 'i';
}

$size = mb_strlen($line, 'utf-8');
$line = "\n" . $size . " " . $line; // Adds another 8 bytes
$logLine = escapeshellarg($line);
echo shell_exec("echo {$logLine} >> data.log}");

メモリ制限を疑って、PHP のメモリ制限を 128 MB から 512 MB に増やしましたが、状況は変わりませんでした。この制限の原因は何ですか?

編集:
いくつかの詳細情報:

$ xargs --show-limits
Your environment variables take up 3126 bytes
POSIX upper limit on argument length (this system): 2091978
POSIX smallest allowable upper limit on argument length (all systems): 4096
Maximum length of command we could actually use: 2088852
Size of command buffer we are actually using: 131072
4

1 に答える 1

2

PHP とは別に、基本的に行っていることは、システムのコマンド ライン プロセッサで巨大なコマンドを作成して実行することです。

すべてのコマンド ライン シェルには最大コマンド サイズがあると思います。その制限は、Windows 2000 では 2047、Windows XP では 8191 [ref]です。Linux の制限はさらに大きくなる可能性がありますが、無限になるとは思いません。システムの限界に達したと確信しています。

PS PHP がメモリ制限に達すると、適切なエラー メッセージが表示されます。

于 2012-12-12T12:46:50.787 に答える