現在開発中のOpenPNEのアプリケーションの拡張案件。作業していた中の悲しい結末。
今回の拡張は、3,500件のデータをOpenPNE内のテーブルにインポートするもの。このデータは、追加・更新・削除のデータを含んでいて、レコードごとにそれぞれの処理を行います。つまり、バッチ処理です。もちろんデータの整合性チェックを行って、外部のWebサービスの連携(これがとても重い!)も行います。
しかし、100件辺りで、Apacheを異常終了してしまう。ローカルPC上でXAMPPでテストしているのが問題? でも、本番で動かなくなるのも問題ですので。ローカルPCで解決することに。
まずは、SQLの見直し、なるべくシンプルにということでSQLを書き直しましたが、解決にならず。
メモリの使い方が悪いのかと重い、処理を見直してきちんとメモリ解放するようにしました。しかし、これも解決にならず。
インポート結果の出力を制限するようにしましたが、こちらも解決にならず。
いよいよ、最後の手段。最初はDBへのアクセスは、まともにOpenPNEのライブラリを使っていました。これをMySQLの低レベルの関数でアクセスするように変更。つまり、画面周りだけをOpenPNEで記述して、あとはガリガリPHPのMySQL関数で書きます。PEARも使わずに。
これで、問題なく動くようになりました。結局は最初の2週間の成果はゴミ箱へ。早々に諦めて次の手段に移ることも大事です。
このページは xfy Blog Editor を利用して作成されました。