2011-07-04 10 views
0

私はPHPで追加するコンテンツの処理にhttps://github.com/rodneyrehm/CFPropertyListのCFPropertyListを使用しています。CFPropertyListで大きな.plistファイルを処理する

すべてうまくいきましたが、すべてのコンテンツが追加されたので、私のファイルは約700KBですが、大きくはないが、ファイルを保存しようとするとApacheがクラッシュするほど大きくなっています。私は自分のアプリケーションで多くの時間をCFPropertyList-への呼び出しによって取得されていることCacheGrindに見

子PID 1278終了信号セグメンテーションフォールト

>インポート()とCFDictionary-> toXML()ので、どこにボトルネックになるの?

多くの変更を一度に行っていますか?一度に多くの変更を保存することを避けるために、変更の間にload()とsave()を行う必要がありますか?

ヒント?

答えて

0

bugs.php.netする問題再帰的なループであなたの関数を膨大な時間で呼び出すことです。

これは、致命的なエラーまたは警告で終了しないPHPでセグメンテーションを引き起こす無限ループを作成するためです。

1

PHPで問題はあるがバグだとは思わない。 Segfaultは、PHP自体に深刻なバグがある場合にのみ発生します。

次のステップ:

    • まず、それはもう起こらない場合は、それはまだ起こっ
    • 幸せな気分に最新のPHPのバージョン(5.3.6)
    • にアップグレード20行以下のPHPスクリプトで問題を再現してください。
    • レポートあなたは未知のサイズの原稿でsearchNode()関数を実装する場合、あなたは常にで退任を避けるために、「深さ」パラメータを使用する必要があります
+0

MAMPの再コンパイルが容易ではないため、PHPをローカルにアップグレードすることはできません。しかし、私は別のバージョンのサーバーで同じ問題があります。私はVMを試してみる。 – spankmaster79

+0

また、segフォルトを引き起こしている無限ループかもしれませんか? – spankmaster79

関連する問題