Есть один экспорт в csv и он внезапно перестал работать

Статус
В этой теме нельзя размещать новые ответы.

timur_

Постоялец
Регистрация
27 Окт 2014
Сообщения
142
Реакции
67
Есть некая система управления, где на странице с отчетом можно выгрузить этот отчёт в csv документ. Всё работало исправно, но сейчас вдруг начал выдавать пустой csv документ, в какую сторону копать?

Скрытое содержимое доступно для зарегистрированных пользователей!


Если ещё нужно какие вводные данные, с радостью вброшу
 
Последнее редактирование:
дебаггить..

после
foreach ($data['email_list'] as $row) {

var_dump($row);
 
дебаггить..

после
foreach ($data['email_list'] as $row) {

var_dump($row);
там в контроллере все слишком трудно...
вообще может быть 2 проблемы, загрузки данных вообще, либо вставка этих данных. Как нибудь можно проверить второе?
 
там в контроллере все слишком трудно...
вообще может быть 2 проблемы, загрузки данных вообще, либо вставка этих данных. Как нибудь можно проверить второе?
Верно, вывод через echo тупо может перехватываться буферами.

Начать стоит с проверки наполнения файла.
Закомментируй unlink и посмотри на хостинге файл пустой или нет.
Если пустой, то 2й огрызок кода с fopen надо утыкать var_dump() чтобы разобраться в логике и поняв логику, можно будет найти ошибку.

Ну и включи отображение ошибок. В yii в продакшн режиме они по-умолчанию будут в файлик сыпаться без вывода на экран.
 
Верно, вывод через echo тупо может перехватываться буферами.

Начать стоит с проверки наполнения файла.
Закомментируй unlink и посмотри на хостинге файл пустой или нет.
Если пустой, то 2й огрызок кода с fopen надо утыкать var_dump() чтобы разобраться в логике и поняв логику, можно будет найти ошибку.

Ну и включи отображение ошибок. В yii в продакшн режиме они по-умолчанию будут в файлик сыпаться без вывода на экран.
обновил код из контроллера в ОП-посте, первый кусок был другой веткой..

на хосте файл пустой
 
обновил код из контроллера в ОП-посте, первый кусок был другой веткой..

на хосте файл пустой
Значит генерация хромает.

А смысла в обновлении кода нет, там слишком много if`ов и функций. Это на сервере дебажить надо, какой из if`ов срабатывает и почему не заполняет массив. Может банально одну из функций $this->sales->get... изменили. А может эти функции еще на что-то опираются и там фейл.
 
Значит генерация хромает.
А смысла в обновлении кода нет, там слишком много if`ов и функций. Это на сервере дебажить надо, какой из if`ов срабатывает и почему не заполняет массив. Может банально одну из функций $this->sales->get... изменили. А может эти функции еще на что-то опираются и там фейл.
идёт по дефолту по крайней ветке:
PHP:
 $data['email_list'] = $this->sales->getAllOrderEmailsWithDate($date_start, $date_finish, 0, $_POST['types'], $diler, '', $rassrochka_temp);
но после этого var_dump($data['email_list']) отдает false, значит ошибка в этой функции?
 
но после этого var_dump($data['email_list']) отдает false, значит ошибка в этой функции?

теперь надо вардампить эту функцию, скорее всего там где-то есть retern false; - надо смотреть отчего это
 
теперь надо вардампить эту функцию, скорее всего там где-то есть retern false; - надо смотреть отчего это
PHP:
public function getAllOrderEmailsWithDate($date_start, $date_finish, $limit = 0, $types = array(1), $diler_id = 0, $number = 0, $rassrochka = '') {
        if(!empty($number))
            $searchNumber = ' AND so.number LIKE "%'.$number.'%"';
        else
            $searchNumber = '';

        if(!empty($limit)) $limit = 'LIMIT 0, '.(int)$limit;
        else $limit = '';

        if(!empty($diler_id)) $diler = ' AND ((so.type_id = 2 AND so.shop_id ='.(int)$diler_id.') OR so.type_id <> 2)';
        else $diler = '';

        $where_rassrochka = '';
        if($rassrochka == 1){
            $where_rassrochka = '';
        }
        if($rassrochka == 2){
            $where_rassrochka = ' so.rassrochka > 0 AND ';
        }
        if($rassrochka == 3){
            $where_rassrochka = ' so.rassrochka = 0 AND ';
        }
        $where_dostavka_fullpay = '';
        if(in_array(6,$types)){
            $where_dostavka_fullpay = ' ((so.date_fakt_otgruz = "0000-00-00 00:00:00" AND so.price <= so.payment) OR so.fullpay = 1
                OR (so.date_fakt_otgruz != "0000-00-00 00:00:00" AND so.price <= so.payment AND so.date_fakt_otgruz >= (SELECT sp.date FROM sales_payments sp WHERE sp.order_id = so.id ORDER BY sp.date DESC LIMIT 1))) AND ';
        }

        $sql  = 'SELECT so.email, so.fio, so.customer_surname, so.customer_name, so.customer_patronymic FROM sales_orders so '.
            'WHERE so.email <> "" AND so.email IS NOT NULL AND '.$where_dostavka_fullpay.$where_rassrochka.' so.type_id IN ('.implode(',', $types).') AND date_order >= '.$this->db->escape($date_start).' AND date_order <= '.$this->db->escape($date_finish).' '.$diler.$searchNumber.
            'ORDER BY so.date_order DESC, so.date_create DESC, so.number DESC '.$limit;

        return $this->db->get_all($sql);
    }

да, проблема в запросе.. попробовал без условий - всё ок записалось

upd.: в очередной раз спасибо за советы, буду искать шалуна в бд
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху