Drum Boom в роли друпалера (Мои Грабли)
Автор: admin
Здравствуйте, как обычно - вы меня уже очень долго не слышали и не видели. Но на всё есть свои причины ибо начал я упорно зарабятывать деньги. Они всем нужны и тружусь сейчас над несколькими проектами параллельно.
Так уж вышло что несколько из них я решил делать на Друпале (CMF Drupal ). О самой системе я расскажу наверное позже, так как во время разработки у меня слишком много противоречивых эмоций и я не хочу быть необъективным. Вобщем суть данного поста в том, чтобы некоторые мои грабли вынести на всеобщее обсуждение и может быть помочь некоторым людям, которые тоже пытаются сделать на Друпале.
SimplePie не любит Yandex
Итак, всё что было до сих пор я уже и не помню, только вот помню что пришлось мне перепысать немного simplepie parser для того, чтоб он смог понять контрукцию yandex:full-text в импортируемых лентах новостей. Код выставлять я не буду, если вдруг кому-то понадобится - напишите - тогда уже выложу, а так мне кажется что это я чего-то недопонял. Короче Если у вас есть другие идеи как сделать импорт ленты заточеной под yandex с помощью feed api и сводных инструментов - пишите. Я переписал немного парсер.
Feed api node purge обиделся за "0"
И действительно в FeedApi при удалении всех пунктов фида я получал странную вещь
1 feed items of 20 could be deleted before script time out - click Remove items again to delete more.
И так как всё происходило достаточно быстро - я задался вопросом - почему тогда таймаут и как это может быть, если я на время разработки показатель установил time_limit в "0", и это должно значить, что никаких таймаутов нет и в помине, а время исполнения безгранично. Но как всегда - хотел как лучше, а получилось - как всегда. А именно - FeedApi оказывается при ближайшем рассмотрении не понял моего благородного жеста по отношению к себе, а подумал, что я ему вообще воздух перекрыл - вот и говорил мне, что ничего не может удалить, мол дайте хоть пару секунд на исполнение.
Где крылась ошибка? В файле feedapi_node.module в методе _feedapi_node_purge
function _feedapi_node_purge($feed) {
$total = db_result(db_query('SELECT COUNT(*) FROM {feedapi_node_item_feed} WHERE feed_nid = %d', $feed->nid));
$deleted = 0;
$max_execution_time = ini_get('max_execution_time');
.....
if (($max_execution_time - 5) < round(timer_read('page') / 1000)) {
......
Всё ясно, - подумал я и дописал после $max_execution_time = ini_get('max_execution_time'); строчку
if($max_execution_time==0){$max_execution_time=240; }
Таким образом я обяснил ему что ноль это не ноль, а совсем что-то другое - 240 в соём случае. Забавно, но неограниченное время ему показалось не таким приятным, как обманные 240 секунд.
Вывод: нужно улучшать всё постепенно, для того, чтоб тебя правильно поняли.
Пока вроде всё.
Буду писать наверное короче, чем раньше, зато так у меня получится соблюдать хоть какую-то периодичность.
С уважением,
Ваш Друм Бум.





Смотри на него… у всех кризис, а он деньги зарабатывает !
ЗЫЖ Я тоже всё на друпале!
Да, Drupal – хороший выбор
Joomla не пробовали как альтернативу?
Конечно, пробовал и работаю на ней с удовольствием.
Просто для некоторых целей Друпал лучше годится как CMF. Кстати, как раз готовлю подобную статью по граблям в некоторых модулях Joomla.