Большое количество купонов на скидку

Добрый день.

Понадобилось мне добавить на сайт порядка 500 000 купонов на скидку разным номиналом, дабы потом поделиться с покупателями. Сгенерировал, разбил по размеру скидки, и импортировал напрямую в базу данных. 

На текущий момент вебасист при попытке открыть раздел "Купоны на скидку" зависает в бесконечной загрузке, или же он из все грузит, но ждал я минут 30, так и не дождался. В связи с чем возникает вопрос, как этого избежать? как добиться от него работы с большим числом купонов? 

10 ответов

  • 1

    На мой взгляд, 500 000 купонов на скидку - это неправильный подход, хотя я не знаю задачи, которая потребовала такого решения...

    В первую очередь проверьте логи. По ним, возможно, станет более понятно, почему не открывается страница (тяжёлый запрос, нехватка оперативной памяти, ошибка базы данных и т.д.). Удобно использовать приложение логи: https://www.webasyst.ru/store/... При необходимости там можно включить мониторинг всех ошибок php.

    • +1
      Александр Галеев Александр Галеев 19 февраля 2019 09:57 #

      Ну 500 000 промокодов действительно под определенную бизнес-задачу, которую по другому не решить.

      Проверил логи, вот что пишет: 

      [19-Feb-2019 06:38:59 Etc/UTC] PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted (tried to allocate 128 bytes) in site.ru/public_html/wa-system/database/waDbMysqliAdapter.class.php on line 128
      [19-Feb-2019 06:39:04 Etc/UTC] PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted (tried to allocate 32 bytes) in site.ru/public_html/wa-system/database/waDbResultIterator.class.php on line 122

      memory_limit увеличивал до 512, те же ошибки.

      • +1

        Судя из ошибки, да, как минимум, проблема в недостаточном количестве памяти. Но памяти нужно существенно больше на такое количество промокодов. 

        Если у Вас выделенный сервер, то проверьте, какое максимальное количество памяти доступно на сервере и в настройках php.ini установите максимально доступное значение в переменную memory_limit. Далее протестируйте и отслеживайте ошибки.

        • +1
          Александр Галеев Александр Галеев 20 февраля 2019 09:55 #

          VDS, максимум 2Гб только на этот проект, других проектов нет. 

          На самом деле мне еще хотелось бы услышать мнение разработчиков. Сколько по их мнению  можно добавить купонов, чтобы не упал сервер? 

          • +1

            Судя по  задаче, лучше вообще отказаться от купонов и разработать некий плагин, который будет предоставлять уникальную скидку клиентам, например, по идентификатору клиента. Также сделать уникальное поле в БД и возможность его редактирования из админки в настройках клиента, где можно будет регулировать сумму или процент скидки...

            • +1
              Александр Галеев Александр Галеев 20 февраля 2019 11:35 #

              Вы немного не поняли задачу) Мы генерим купоны и передаем их партнеру, а он уже распространяет. Причем все купоны должны быть заранее известны.

              • +1

                Вам нужен для каждого клиента уникальный промокод, верно? Теоретически можно сделать так, чтобы промокод был, например, "promo-{client_id}". А при помощи плагина сделать так, чтобы такие промокоды обрабатывались, в корзине и делали заранее заданную скидку. Так как скидка нужна уникальная для каждого клиента, значит, опять же при помощи плагина можно сделать отдельное поле в БД, где будет привязка к клиенту определённого процента или суммы скидки.

                Сделать потом выгрузку таких промокодов для партнёров, естественно, не проблема. Сгенерировать уникальную сумму или процент скидки и привязать их к клиенту в БД также можно.

                Это только идея, как можно обойтись без генерации сотен тысяч промокодов. Возможно, для Вашей задачи она не подходит...

                • +1
                  Александр Галеев Александр Галеев 20 февраля 2019 13:01 #

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

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите