Добрый день, первый раз устанавливаю Magento на сайт и столкнулся с определенными сложностями: не удается правильно настроить cron-задачи.
Я уже перепробовал кучу вариантов и
* * * * * <path-to-binary> -c <ini-file-path> <your Magento install dir>/bin/magento cron:run [> <log-file>&]
и
* * * * * /usr/bin/wget -t 1 -O < URL страницы >
и еще кучу, но не буду их перечислять.
Проблема в том, что:
1. В файлах с логами крона находится хелп по использованию, скрин
2. В админке отображается "One or more indexers are invalid. Make sure your Magento cron job is running."
3. Я запустил так же тестовый скрипт
<?php $fd = fopen("<путь к файлу>/my_cron.txt","a"); fwrite($fd, "Обращение к файлу - ".date("d.m.Y H:i")."\r\n"); fclose($fd); ?>
и он работает в отличии от скриптов Magento, при этом файл с логом оставляет пустым
Не могли бы вы мне помочь? Уже второй день голову ломаю.
Solved! Go to Solution.
Как я писал выше, у вас 2 решения:
1. изменить один параметр в настройках Magento2
2. изменить код одного файла в ядре Magento2
Вам должно хватить первого варианта.
Еще один момент - magento я поставил на хостинг, а не на выделенный веб-сервер и cron-задачи я добавляю через веб-интерфейс. Переписка с саппортом:
- Расписание через SSH-доступ Вы не сможете создать. Просто Вы смотрите рекомендации для сервера, а сервера у Вас нет. Поэтому они и не подходят. Вы не сможете создать пользователя.
логин хостинг аккаунта и есть пользователь и задачи можно только через, разделе панели добавлять
- А что же тогда делать, в чем ошибка? Или с этой цмс просто невозможно работать без выделенного сервера?
- Поискать решения\советы по настройке крона на разнообразных специализированных форумах данной cms. Как минимум сайт открывается.
Конечно что все возможные дополнительные компоненты можно только на впс\выделенном сервере.
Есть ли какие-то советы? Или мне лучше даже не пытаться поднять Magento на хостинге?
В данный момент разбираемся с такой же проблемой у одного клиента на выделенном сервере. Когда разберёмся, отпишусь.
У Вас Magento какая?
Если не старше 1.9 поставьте вот этот планировщик задач
с коннекта
https://www.magentocommerce.com/magento-connect/aoe-scheduler.html
или гита
https://github.com/AOEpeople/Aoe_Scheduler
Он сам Вам скажет какую команду прописать в крон на хостинге
>>Или мне лучше даже не пытаться поднять Magento на хостинге?
И на хостинге все отлично может работать. Все зависит от размера каталога и количества посетителей.
Речь о Magento2
Magento 2
В нашем случае оказалось, что проблема была в комбинации настроек сервера и настроек крона в админке.
По умолчанию крон процесс, отвечающий за реиндекс запускается в отдельном процессе.
Это настраивается в
Stores -> Configuration -> ADVANCED -> System -> Cron (Scheduled Tasks) - all the times are in minutes -> Cron configuration options for group: index -> Use Separate Process
Для решения хватило выставить это значение в No.
А проблема с запуском в отдельном процессе в том, что на сервере было несколько разных PHP.
* php1 - /pathtophp/php
* php2 - /otherpath/php
Сайт работал на php2, а php1 был по умолчанию.
В случае, когда крон запускает скрип magento под правильным phpи есть указание запуститься в отдельном процессе, то он из кода (vendor\magento\module-cron\Observer\ProcessCronQueueObserver.php) запускает второй процесс уже под php по умолчанию.
Так что, если вас не устраивает реиндекс в том же процессе, то можете или изменить код в файле, прописав путь до вашего php или настроить сервер так, чтобы php по умолчанию был нужным.
У меня тоже по умолчанию стоит, если не ошибаюсь, php 5.2 а сайт на php 5.5.
Но проблема в том, что это хостинг а не выделенный сервер. Поэтому я скорее всего не смогу ни настройки cron-а поменять, ни поменять дефолтную php.
Иного пути никакого нету?
Как я писал выше, у вас 2 решения:
1. изменить один параметр в настройках Magento2
2. изменить код одного файла в ядре Magento2
Вам должно хватить первого варианта.
Спасибо большое, сначала неправильно вас понял