使用phalcon框架,进行如下查询
public function getCarSeriesList($brandId, $start = 0, $count = 1000){
$phql = "SELECT cs.*, b.* FROM Test\Common\Models\Entities\CarSeries cs LEFT JOIN Test\Common\Models\Entities\CarBrands b ON cs.brandId = b.id ";
$condition = array();
if(!empty($brandId)){
$phql .= " WHERE cs.brandId = ?0 ";
$condition[0] = $brandId;
}
$phql .= " ORDER BY cs.name_en ASC ";
if(!empty($count)){
$phql .= " LIMIT ?1, ?2";
$condition[1] = $start;
$condition[2] = $count;
}
$result = $this->modelsManager->executeQuery($phql, $condition);
return $result->toArray();
}
结果php-fpm 进程报错:
2017/06/27 17:07:49 [error] 60709#0: *1028 FastCGI sent in stderr: "PHP message: PHP Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 532692992 bytes) in /Users/tester/www/testserver/apps/backend/controllers/CarSeriesController.php on line 27" while reading response header from upstream, client: 127.0.0.1, server: local.test.me, request: "GET /series HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "admin.local.test.me"
已将php.ini的memory_limit的值,从128M修改为512M,依然会有这个问题。请问各位是否遇到过类似问题?
1、这个不是phalcon的问题 是php的问题
2、查询的数据太大了,把它全加载到内存里肯定会报这个
3、可以通过ini_set("memory_limit","-1");来解决,但是。。。。作为一个线上项目绝逼不建议这样做
4、一次性查出的数据量太大,你需要优化你的程序,而不是通过修改某些系统参数,