2

symfony 1.4 (タスクから) と Doctrine 1.2 を使用して、多くのファイルからデータをインポートします。

うまく動作しますが、数分後、コードではなく Doctrine で、PHP から「許可されたメモリサイズが使い果たされました」という致命的なエラーが発生します…</p>

Call Stack:
    0.0004     325216   1. {main}() C:\wamp\www\XPower\symfony:0
    0.0125     587704   2. include('C:\wamp\www\XPower\lib\vendor\symfony\lib\command\cli.php') C:\wamp\www\XPower\symfony:14
    1.9202    6981872   3. sfSymfonyCommandApplication->run() C:\wamp\www\XPower\lib\vendor\symfony\lib\command\cli.php:20
    1.9233    6983528   4. sfTask->runFromCLI() C:\wamp\www\XPower\lib\vendor\symfony\lib\command\sfSymfonyCommandApplication.class.php:76
    1.9234    6983688   5. sfBaseTask->doRun() C:\wamp\www\XPower\lib\vendor\symfony\lib\task\sfTask.class.php:97
    3.0794    7047088   6. dataImportTask->execute() C:\wamp\www\XPower\lib\vendor\symfony\lib\task\sfBaseTask.class.php:68
    3.2731    8663752   7. dataImportTask->traiterDossier() C:\wamp\www\XPower\lib\task\dataImportTask.class.php:36
    7.7762   17906824   8. dataImportTask->traiterDossier() C:\wamp\www\XPower\lib\task\dataImportTask.class.php:55
  264.4390  133557080   9. xPower::importerXml() C:\wamp\www\XPower\lib\task\dataImportTask.class.php:64
  264.5919  133609328  10. xPower::importerFichierXml() C:\wamp\www\XPower\lib\XPower.class.php:312
  265.4313  134048568  11. InverterTable->findOneBySerialNumber() C:\wamp\www\XPower\lib\XPower.class.php:445
  265.4313  134048776  12. Doctrine_Table->__call() C:\wamp\www\XPower\lib\XPower.class.php:445

Doctrine 呼び出しに「->free()」を追加しようとしましたがInverterTable->findOneBySerialNumber()、「魔法の」Doctrine メソッドで失敗したようです。

どうすれば問題を解決できますか? 「free()」への呼び出しを追加して、独自の「findOneBySerialNumber」メソッドを作成する必要がありますか?

4

1 に答える 1

4

それは教義によくある問題です。pcntl_forkを使用する必要があります。

私は常にこの要点を例として使用します。

pcntl_forkPOSIX 規格に準拠した OS が必要なため、Windows では動作しません。

教義の自由なオブジェクトのオブジェクトを支援するだけでも十分かもしれません。これについては素晴らしい答えがあります。

あなたがいくつか持っている場合The MySQL server has gone away

Doctrine と MySQL を使用する場合、次の子スレッド コードを追加する必要がある場合があります。

Doctrine_Manager::connection()->close();

これによりデータベース接続が閉じられ、Doctrine は最初のクエリで自動的に再作成します。

于 2012-04-18T14:46:26.293 に答える