Доброе утро.
Причин может быть много.
Но первое, что надо проверить, есть ли ошибки при запросе к базе и при работе самого php.
Для этого надо настроить вывод ошибок, запись в лог и тому подобное.
Так что минимум знаний нужно иметь, чтобы работать даже с говёным wordpress-oм.
я вставляю код указанный в примерах, но оно не работает
Как именно не работает? Ничего не находит, выводит ошибки или ещё какая-то проблема?
hint000, по крайней мере я так думаю, что установка debian на соседний ssd так повлияла на swap ubuntu.
Во-первых, при установке debian предлагалось форматировать swap от ubuntu, ну и во-вторых, после установки debian, обновления grub для ubuntu, чтобы она видела debian, сама ubuntu начала долго грузится.
Во время загрузки ubuntu было предупреждение/ошибка(?)
gave up waiting for suspend/resume device
Потом на загрузочном экране было сообщение, что проверяются диски, для отмены нажмите ctrl+c
По тексту "gave up waiting..." я нашёл объяснение, что это связано, скорей всего с uuid swap-a, правда на debian.org.
Проверил при помощи blkid и fstab, так и есть, значения не совпадали.
hint000, по поводу двух swap-ов.
Всё таки подпортила debian swap для ubunty, поменяла uuid. В следствии этого ubuntu долго грузилась и постоянно проверяла диски. Пришлось руками подправлять uuid.
Если оставит один на две системы, то возможно будет постоянной проблемой значение uuid.
Когда начинается импорт или обновление товаров, то все товары сразу, ассоциативным массивом закидываются в очередь. И уже в очереди, в цикле, идёт проверка, есть такой товар в базе - обновляем, нет такого товара в базе - записываем новый. Если в этом случае произошёл сбой соединения, или ещё что-то похожее, то при сохраняемой очереди, когда возобновится работа, все товары начнут обрабатываться с самого начала?
Добрый день.
В том-то и дело, что файл читается целиком.
При первом импорте, когда пользователь первый раз импортирует товар, особых проверок на дубли, я думаю, не нужно.
А вот при обновлении по cron-y скорей всего.
Ну и при обновлении по расписанию, когда раз в сутки, например, может быть добавлено несколько файлов в очередь. Пока прочитается один, остальные висят и ждут своей очереди. Думаю, что надо читать файл поштучно, каждый товар, и раскидывать это по нескольким очередям. Или я ошибаюсь?
Вообще то странно там логика построена, на мой взгляд.
Отправляются url на изображения. Сначала скачиваются/записываются на диск и обрабатываются, сжатие, создание превью.
Нет, очередь нужна для обработки без ожидания. А для хранения используется СУБД
Товары, естественно, хранятся в базе, но никакой информации об периоде обновления у товара нет. Все условия для обновления хранятся в отдельной таблице. Запись туда происходит при первом импорте.
Записывается url, по которому расположен yml файл, частота обновления, например раз в сутки и какие поля у товара надо обновить (цена, количество...)
По cron-y проверяется, какие файлы надо скачать и обновить товары. Допустим, что надо будет скачать десять файлов и сравнить товары в базе. Получается, что все эти файлы будут отправлены в одну очередь. И пока не будут проверены все товары с одного файла остальные файлы будут ждать своей очереди.
Всё это происходит как-то медленно.
Берётся файл yml, перегоняется в ассоциативный массив. Потом этот массив читается в цикле. При каждой итерации идёт обращение к базе, проверяется, есть такой товар - обновляем, нет такого товара - пишем в базу новый. И остальные файлы не будут обработаны, пока не закончится обработка предыдущего файла.
MaikMain, в модели есть old_attributes, или как-то так называются, не помню.
Берёте их, берёте новые атрибуты и сравниваете два массива, например через array_diff.
Что получили при сравнении, то и обновляете.
MaikMain, дерево построилось, но код неверен, половина того, что сейчас в действии не должно быть в контроллере. Всё надо одним запросом делать, а сейчас у Вас костыльный костыль. И что-то не вижу валидации данных.
Смотрите видео, которое я указал, читайте блог автора видео, там много полезного по yii2.
По поводу undefined переменной ничего не могу сказать, по идее должна работать нормально. Можно прописать doc-block для переменной, инициализировать её в view.
Смотрите консоль браузера, логи php на предмет ошибки. Толку смотреть на код?