Wordpress проблема с написанием плагина.

12
A4
На сайте с 05.01.2012
Offline
55
1403

Здравствуйте.

Пишу плагин, который должен изменять содержимое указанного файла по Cron'у. Не спрашивайте зачем. Вроде-бы задача проще простого, но оказалось что и тут не обойдется без подводных камней. Для решения этой задачи я решил использовать функцию wp_schedule_event из встроенной в вордпресс эмуляции Cron'а. Сделал все как в примере на странице codex'а но это дело НЕ РАБОТАЕТ. Уже второй день я рою буржунет, стековерфлоу и хабрахабр. Дошло до того, что я начал валить все на сервер. Но сервер тут не причем. Омг, это ужас. Я понимаю что сервер не причем, это же эмуляция Cron'а, а не сам Cron.

Но давайте для начала я предоставлю достопочтимой публике свой код:

pastebin

MI
На сайте с 16.07.2008
Offline
74
#1

cron на сервере отсутствует?

SeVlad
На сайте с 03.11.2008
Offline
1609
#2
aftamat4ik:
но это дело НЕ РАБОТАЕТ.

ВПшный крон - это пхп-скрипт. Естественно, что он будет работать (запускаться), только тогда, когда его вызывают. Говоря проще - на сайте должен быть трафик.

Это главная, но не единственная проблема "кронов" на пхп скриптах.

Нет ничего надёжней северного крона.

metadon.info:
cron на сервере отсутствует?

Для ВПшного "крона" он не нужен.

aftamat4ik:
pastebin

Комметы жгут :)

Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Связь со мной через http://wp.me/P3YHjQ-3.
A4
На сайте с 05.01.2012
Offline
55
#3
metadon.info:
cron на сервере отсутствует?

OpenServer php 5.4 Cron встроен, см скрин: http://SSMaker.ru/d5a687cd/

MI
На сайте с 16.07.2008
Offline
74
#4

Можно поискать web cron и использовать его, если трафика нет каждую минуту например.

SeVlad
На сайте с 03.11.2008
Offline
1609
#5
aftamat4ik:
OpenServer

На винде? Писать плагины?! О, ужас...

Поставь виртуалку и возьми готовый образ с нормальным вебсервером.

A4
На сайте с 05.01.2012
Offline
55
#6
SeVlad:
ВПшный крон - это пхп-скрипт. Естественно, что он будет работать (запускаться), только тогда, когда его вызывают. Говоря проще - на сайте должен быть трафик.

Я это понимаю превосходно. Я ТУДА Уже из под оперы заходил... из под фаерфокса заходил... эмулировал посещаемость...

Обновления он проверяет нормально, то есть cron работает. Но вот мой метод - не вызывается...

Хотя при вызове:

echo '<pre>'; print_r( _get_cron_array() ); echo '</pre>'; // _get_cron_array() - не документированна функция wp, показывающая все задачи для встроенного cron'а

Получаю такое:


[1419254910] => Array
(
[process_data_evt] => Array
(
[40cd750bba9870f18aada2478b24840a] => Array
(
[schedule] => half_than_min
[args] => Array
(
)

[interval] => 30
)

)

)

То есть Cron добавляется, а вот add_action не вызывается. Если вызывать вручную через do_action('process_data_evt'), то все работает.

MI
На сайте с 16.07.2008
Offline
74
#7

В OpenServer есть Планировщик заданий, который можно настроить через GUI

A4
На сайте с 05.01.2012
Offline
55
#8
SeVlad:
На винде? Писать плагины?! О, ужас...

Поставь виртуалку и возьми готовый образ с нормальным вебсервером.

Ну... я считаю виртуалка нужна не для девелопинга, а для размещения сайтов... А вот венда как раз для девелопинга. Опять-же я писал что Cron работает т.к. вротпресс проверяет обновления вполне исправно(чем мне и надоедает).

---------- Добавлено 22.12.2014 в 15:03 ----------

metadon.info:
В OpenServer есть Планировщик заданий, который можно настроить через GUI

Дело не в OpenServer'е, я уже пробовал вызывать Cron в ручную через http://wp-site.sto/wp-cron.php?doing_cron и результат - НУЛЕВОЙ.

SeVlad
На сайте с 03.11.2008
Offline
1609
#9
aftamat4ik:
эмулировал посещаемость...

:) она должна быть... достаточная.. Во много раз больше, чем сможет сделать один браузер на локалке :)

aftamat4ik:
Ну... я считаю виртуалка нужна не для девелопинга, а для размещения сайтов...

Сайты нужно разрабатывать (тестировать) в той среде, в которой они будут эксплуатироваться. Т.е. в лине.

Никто при этом не отрицает, что можно использовать виндовые средства разработки (отчасти они даже лучше).

АПД. "Виртуалка" - виртуальная машина.

ЗЫ. код на форуме помещай в ббкод не php , а code.

A4
На сайте с 05.01.2012
Offline
55
#10
SeVlad:
:) она должна быть... достаточная.. Во много раз больше, чем сможет сделать один браузер на локалке :)

Это то я понимаю. Но Cron можно вызвать в ручную, если обратиться по адресу: адрессайта.ру/wp-cron.php?doing_cron, что я собственно уже раз 50 и делал. Может больше...

SeVlad:
ЗЫ. код на форуме помещай в ббкод не php , а code.

Ок, разобрался.

---------- Добавлено 22.12.2014 в 15:48 ----------

что же мне теперь, самому Cron эмулировать чтоли? Я конечно могу, но как-то не сторонник велосипедостроения, знаете ли. И вообще, за все время написания плагина я столкнулся с 2 багами.(В друпале, к примеру, ниразу с багами не сталкивался, хотя апи там гораздо более изощренное).

1. Каждый файл приходится начинать с //, потому что многострочный комментарий вызывает баг при смене кодировки файла.

2. Неправильный порядок подключения файлов в папке includes, из-за которого приходится писать что-то вроде этого: include_once( ABSPATH . WPINC . '/pluggable.php');

Сейчас 4я версия вордпресса. Ужас. Чем занимается сообщество, хотелось бы мне знать... Опенсорц бляха муха... Неужто таки придется самому Cron эмулировать....

---------- Добавлено 22.12.2014 в 17:06 ----------

Всем спасибо. Тему можно закрывать. Я написал велосипед и решил проблему. К чертям встроенный Cron. Мой велосипед работает на порядок лучше этого китайского движка.

12

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