0

PHP で解釈する必要があるバッファーがありますが、バッファーで多くの substr を使用すると、おそらく substr が部分文字列の新しいコピーを作成するため、非常に遅くなり、CPU を集中的に使用することが判明しました。

次の方法でバッファ内を前方に移動する必要があります。

X のオフセット (可変バイト数) だけ移動します。または先頭から X バイトを削除する

そのようなことを可能にするコンテナがPHPにありますか?

例 (疑似コード)

while( !done )
{
   $itemSize = unpack( ?, $buffer );
   $item = substr($buffer, $itemSize );
   $done = doSomething( $item );
   $buffer = $item;
}

ありがとうございました

4

1 に答える 1

0

バイト レベルで作業することは、PHP が作成された目的ではありません。PHP がメモリを管理する方法は、あなたが思っているよりもずっと複雑です。多くの参照で機能し、使用しなくてもコピーはほとんど作成されません&

遅いのは多くのことを行ったsubstrことが原因であるとは非常に疑わしく、PHPでバイトレベルでメモリを管理することがその助けになるとは非常に思えません。

于 2013-03-04T19:41:55.877 に答える