cari

Rumah  >  Soal Jawab  >  teks badan

php - masalah keletihan memori pertanyaan phalcon

Gunakan rangka kerja phalcon untuk melaksanakan pertanyaan berikut

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();
}

Hasilnya ialah proses php-fpm melaporkan ralat:

2017/06/27 17:07:49 [ralat] 60709#0: *1028 FastCGI dihantar dalam stderr: "Mesej PHP: PHP Ralat maut: Saiz memori yang dibenarkan 536870912 bait habis (cuba memperuntukkan 532692) /tester/www/testserver/apps/backend/controllers/CarSeriesController.php pada baris 27" semasa membaca pengepala respons dari huluan, klien: 127.0.0.1, pelayan: local.test.me, permintaan: "GET /series HTTP/1.1 ", hulu: "fastcgi://127.0.0.1:9000", hos: "admin.local.test.me"

Nilai memory_limit dalam php.ini telah ditukar daripada 128M kepada 512M, tetapi masalah ini masih wujud. Adakah anda pernah mengalami masalah yang sama?

ringa_leeringa_lee2727 hari yang lalu819

membalas semua(1)saya akan balas

  • 阿神

    阿神2017-06-28 09:24:58

    1. Ini bukan masalah dengan phalcon tetapi dengan PHP 2. Data yang ditanya terlalu besar akan menyebabkan masalah ini 3. Anda boleh menggunakan ini_set("memory_limit". ); untuk menyelesaikan, bagaimanapun. . . . Sebagai projek dalam talian, ini pastinya tidak disyorkan 4. Jumlah data yang dikesan pada satu masa adalah terlalu besar Anda perlu mengoptimumkan program anda dan bukannya mengubah suai parameter sistem tertentu

    (1)你可以检查下你的代码,因为你是cs.*,b.* 你看下是不是所有的字段都是必要的,不必要的字段就不要查    出来,只取有用的字段.
    (2)你的查询条件太少,如果本来就这样的话,那你可以通过分段去获取,你这样查,并且还是联表查,这么大的数据量,对于mysql都是负担,如果多个请求进来,分分钟挂了
    (3)优化你的数据表结构

    balas
    0
  • Batalbalas