sometimes it will take a very time to run, i got this example:
public function receiveAction() { $originData=$this->get('request')->request->get('data'); if (!isset($originData)){ $response = new Response(json_encode(array('msg' => 'error,no data'))); $response->headers->set('Content-Type', 'application/json'); return $response; } $data = json_decode( $originData ); if (!is_array($data)){ $response = new Response(json_encode(array('msg' => 'error,data is not correct:'.$originData))); $response->headers->set('Content-Type', 'application/json'); return $response; } $em=$this->getDoctrine()->getEntityManager('webscraper'); foreach($data as $row){ if (!isset($row[0])) continue; /* $ad=$em->getRepository('AcmeDataCollectionBundle:SmallAdds')->findBy(array('url' => $row[0]->string)); if ($ad) continue; */ $ad=new SmallAdds(); $ad->setSource($this->source); $ad->setUrl($row[0]->string); if(isset($row[1])) $ad->setTitle(trim($row[1]->string)); if(isset($row[2])) $ad->setInfo(trim($row[2]->string)); if(isset($row[3])) $ad->setPrice(trim($row[3]->string)); $em->persist($ad); } $em->flush(); $response = new Response(json_encode(array('msg' => 'saved'))); $response->headers->set('Content-Type', 'application/json'); return $response; }if i do not comment the findBy, it will take average 13 sec to run. the for is about 30-40 record. As i comment the findBy, it tak 330ms. well, i have no choice.
评论
发表评论