Время ожидания скрипта при попытке добавить большое количество строк - PullRequest
1 голос
/ 18 января 2012

Я пытаюсь добавить большое количество записей в свою базу данных, используя cakephp (для системы связи QR-кодов).

Мой базовый код выглядит так:

public function generateQrCodes($program_id = null, $amount = 10000)
    {
        //add entries into database & generate QR images
        for ($i = 1; $i++; $i <= $amount) {
            $this->_createQr($program_id, $i);
        }

        //generate ZIP file
    }

    private function _createQr($program_id, $number)
    {
        //save into database
        $this->create();
        $this->data['Qrcode']['program_id'] = $program_id;
        $this->data['Qrcode']['qr'] = $number;
        $saved = $this->save();

        if ($saved) {
            $this->_createQrImage($program_id, $number);
            return true;
        } else {
            return false;
        }
    }

Очевидно, что это истекло (после примерно 900-х строк).Может ли кто-нибудь помочь мне найти способ переписать это так, чтобы оно не зависало (как-то разбить его на куски)?

Ответы [ 2 ]

1 голос
/ 18 января 2012

В качестве альтернативы вы можете изменить директиву max_execution_time в php.ini на большее значение. Время по умолчанию составляет 30 секунд. Если у вас нет доступа к основному php.ini, например, на общем хостинге, вы можете создать локальную копию php.ini в ваших собственных каталогах, и это позволит вам переопределить те директивы, которые вам нужно изменить.

http://www.php.net/manual/en/info.configuration.php#ini.max-execution-time

1 голос
/ 18 января 2012

Сколько времени занимает: $ this -> _ createQrImage ($ program_id, $ number);?

Скорее всего, вы можете сделать это в оболочке, чтобы время не истекло ..

http://book.cakephp.org/1.3/en/view/1107/Creating-Shells-Tasks

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...