Oct 20

Что-то в последнее время, я заметил, что мною все меньше внимания уделяется этому блогу… Но последний перерыв не был связан с ленью или просто нежеланием писать. Я был занят созданием скрипта, который бы делал агентский магазин торговой площадки Plati.ru. Прямого применения я пока что ему не нашел, так как возможны несколько вариантов:
- поисковики склеят страницы и этот скрипт никому не нужен
- если не склеят, тогда у меня есть несколько тысяч страниц с обновляемым контентом и здесь можно:
а) просто тупо зарабатывать на агентских отчислениях (но размера этого заработка пока не известен и он может быть от $0.01 и … );
б) продавать ссылки с этих вот пары тысяч страниц (а вот это уже интересно).

Сам скрипт в работе можно посмотреть здесь: http://oplati.enomo.info. Конечно скрипт еще нужно доработать, например надо сделать генерацию логотипа вместо логотипа самого Plati.ru, а также прикрутить кеширование. НО основной труд все же сделан и его можно пощупать :-)

Mar 20

Пост короткий…

Чем больше углубляюсь в Zend Framework, тем больше нравится Django… А может надо было в сантехники идти? :-) :-) :-)

Feb 16

Пользуетесь ли Вы при разработке готовыми классами и библиотеками, которые лежат на бесплатных расскладках, типа PHPClasses.org, или при каждой новой задаче, той для которой у вас нет своих наработок, “изобретаете” очередной велосипед?

Потому что я за собой заметил это свойство “изобретателя”, хоть и не в массовом порядке (например активно использую для работы с блоггером библиотеку GData от Zend). Вот и не знаю, да и интересно в общем то - этакое “изобретательство” это хорошо или плохо? Ведь с одной стороны, если вы все пишите сами, то вы начинаете лучше разбираться в какойто теме и глубже понимаете проблематику поставленного вопроса. НО в свою очередь вы тратите время на написание кода, который уже написат, протестирован, оптимизирован и в нем исправлено множество ошибок, от которых ваш результат труда еще не застрахован. Не лучше ли взять тот же бесплатный класс для вашей задачи, использовать его, и в то же время, изучив его, вы понимаете как это работает, а также можете приложить руку к его улучшению.

Вот такие вот мысли бродят в трезвой голове :-)

Feb 13

Вот, постал предо мной такой вопрос, как полный переход на PHP5. Ведь все равно рано или поздно надо будет переходить на PHP5, отказываться от поддержки 4-ой версии, использовать функционал 5-ой версии, который не совместим с 4-ой.

Вот и думаю, не рано ли. Но с другой стороны оффициальная поддержка PHP4 прекращена с 1 января сего года и все нормальные хостинги давно уже работают на 5-ой версии PHP.

А Вы уже полностью перешли на PHP 5-ой версии или пишите/заказываете скрипты совмстимые с PHP 4-ой версии?

Feb 07

Как оказалось, мой алгоритм (я приписал его как “ЗЫ” к посту о Multi CURL ) неплохо справляется с поставленной задачей.

Я сделал так: написал функцию получения контента страниц по заданным в массиве (аргумент функции) их URL’ам, которая использует Multi CURL. Результатом работы функции есть массив состоящий из двух элементов: $result[0] и $result[1]. Элемент $result[0] я вляется массивом полученных страниц, а элемент $result[1] является массивом URL’ов страниц, которые функция не получила по той или иной причине. В цикле “do {} while()” я кручу эту функцию получения страниц до тех пор, пока элемент $result[1] не будет пустым массивом (тоесть я получил все страницы). И аргументом функции каждый раз ставлю этот массив неполученных страницы.

Jan 29

Сидел сегодня скрипт писал для выкачивания с одного ресурса нескольких сотен страниц, дальше нужно будет вытащить оттуда все остальные страницы, ссылки на которые присутствуют на этих паре сотен страниц, так что количество измеряется несколькими тысячами. Блин, сайт писан грамотным прогером - стоит защита от количества запрашиваемых страниц с IP за единицу времени. Разлок идет по отсылке письма, тоесть просто ввести каптчу не удастся - надо написать собщение через контакт-форму (также присутсвует каптча)…

Выход один - использовать прокси. Так вот постала задача: мне нужно вытащить n-ное количество станиц с этого ресурса с 90-100% результатом (потеря 10% допускается). И вот тут постал вопрос: как контролировать каждый поток мульти CURL’а? Нужно, если прокси умер (а они могут умереть в каждый момент), то брать следующий по списку (алгоритм задать не проблема) и снова грузить страницу, или Если не загрузилась страница (по таймауту или другой причине) тоже снова ее загрузить… Сам алгоритм понятен, но сейчас пытаюсь реализовать это на практике.

Если у кого есть примеры - киньте в меня или ссылку дайте, где про такое можно почитать…

ЗЫ. Про сам Multi CURL не надо. Нужно о контроле этих самых потоков и их обработке.

ЗЫЫ. На мысль пришло: получать результат запроса страницы и если результат пустой или ошибка и т.д., тогда записывать адрес не полученной страницы в новый массив и потом этот массив прогонять как основной и формировать новый “ошибочный” массив. И так до тех пор, пока массив с “ошибочными” адресами не будет пуст.

Oct 14

Сегодня лазил по phpclasses.org и искал нормальные классы для конвертации XML в массивы. Вот что нашел наиболее интересного:

  1. Clean XML To Array
  2. Adv XML to Array
  3. XML 2 Array
  4. XML Array
  5. XML To Array
  6. Xml2Array
  7. XML2Array_xmlreader
  8. XML_Array

Заодно, хочу провести эксперимент ;-) . Если будет “выхлоп” расскажу в следующих постах, что это был за эксперимент.

Oct 13

Как мы знаем для удаленного постинга в блоги на базе Blogger.com сам Blogger для простых смертных :-) рекомендует пользоваться отсылкой почты, в следствии чего мы должны использовать функцию mail(). Но это какие-то полумеры и, я счтаю, что если серьезно зниматься сплогами тогда нужно искать другой выход (мы не ищем простых путей ;-) ). Сразу можно услышать голос, да мы знаем, есть и АПИ для Blogger’а ( http://code.google.com/apis/blogger/developers_guide_php.html ), но там нам предлагают пользоваться PHP5 и Zend Google data Client Library в одной связке. А оно мне надо? Я хочу иметь свой чистый код и не подключать для простого постинга почти мегабайтовую библиотеку…

Оказывается выход есть и он же демонстрируется Google’ом в своей базе АПИ, причем код работает на PHP 4-ой версии и без подключения каких либо сторонних библиотек, единственное условие это установленный CURL. Итак, идем сюда и курим эти примеры по испрльзованию Google API.

Oct 13

Как оказывается конструкция “?>” которой мы (я) привыкли заканчивать все PHP-скрипты оказывается не есть обязательной. Даже рекомендуется ее не вставлять в конце файла. Это, даже, рекомендуют php.net и Zend.com.

Oct 11

Решал сегодня одну задачку: нужно было прикрутить к скрипту ЧПУ. Все бы ничего, да был у меня в скрипте организован поиск. Так вот, если искать что-то используя латинский алфавит (a-z) то все Ок. НО как только начинали что-то искать на кирилице, то Mod_Rewrite не знал что с этим всем кирилическим добром делать и посылал  меня далеко-далеко. Очень просто выйти из этого положения если использовать кодировку UTF-8. Но у нас народная (я надеюсь что скоро большинство перейдет на UTF-8) кодировка windows-1251, вот тут то и засада. Я как всегда кинулся делать urlencode, но не тут то было - mod_rewrite и дальше посылал меня в деревню Кукуево.

Что же делать думал я, а оказалось все просто: надо делать , почемуто (я еще не разбирался почему), два вложенных urencode: urlencode(urlencode($search_str)).