1

私のデータベースには500のエントリがあります。私のバックエンドにはアクションがあります。例えば:

 public function executeMyAction(sfWebRequest $request) {

 // Get some data from table
 $templates = Doctrine_Core::getTable('SeoTemplates')->findOneByEntity('training');

//Get data from other table(500 items)
 $trainings = Doctrine::getTable('Training')->getTraining();

  // Make some operations with data
  foreach ($trainings as $training) {

       $training->setSomeValue1('some_data');
       $training->setSomeValue2('some_data');
       $training->setSomeValue2('some_data');

  }

// Problem part (try to save)
$trainings->save();
}

save() が長時間実行されました。この問題を解決するには?出来ますか?

私の問題の部分では、すべての既知のエラーFatal error: Maximum execution time of 30 seconds exceeded in

4

1 に答える 1

3

コレクションの代わりに各レコードを保存する

$templates = Doctrine_Core::getTable('SeoTemplates')->findOneByEntity('training');
$trainings = Doctrine::getTable('Training')->getTraining();
foreach ($trainings as $training) {
   $training->setSomeValue1('some_data');
   $training->setSomeValue2('some_data');
   $training->setSomeValue2('some_data');
   $training->save();
}

またはDoctrineを使用して、クエリを使用してレコードを更新します

$q = Doctrine_Query::create()
   ->update('TABLE')
   ->set($val1, '?', $val1)
   ->set($val2, '?', $val2)
   ->set($val3, '?', $val3)
   ->where('id = ?', $id)
   ->execute();
于 2012-06-09T14:43:00.847 に答える