- Привет! Я Шикарно
- Моя миссия - облегчить тебе жизнь!
Пообщаться со мной:
cude@bk.ru

Зачем нужен Шикарно

Любой продукт должен решать проблемы (реальные или надуманные :)) Я пользовался Шикарно много лет, прежде чем решил сделать из него продукт для общественного использования, и могу утверждать, он решает реальные проблемы.

Проблемы:

Замена неудобному крону

Cron по сути безальтернативный способ запуска скриптов по расписанию. Шикарно не только решает неудобства крона но и вносит дополнительные функции. По сути, крон это прекрасная низкоуровневая утилита, Шикарно просто решает проблему "забивания гвоздей микроскопом".

Неудобство №1 - cложный формат времени

Формат времени в cron

К слову, разработчики пошли на это ради универсальности. Только зачем ракета, когда нужен простой велосипед.

Решение

Простой и понятный формат времени.

Выбор времени запуска в Шикарно

Cуществует несколько режимов автоматического запуска:

  1. Через указанный интервал. Причем Шикарно проверит, если скрипт еще работает, не будет запускать новую копию.
  2. В указанное время. Просто пишем "15:30,21:40" и скрипт запустится 2 раза в указанные временные отметки.
  3. Режим "Энерджайзер". Если нужно чтобы скрипт работал постоянно, а когда завис, восстанавливался. В cron такого нет.

Неудобство №2 - добавление новых заданий

Добавление в cron через cpanel

Чтобы добавить задание в крон нужно зайти на сервер через ssh и с помощью утилиты crontab добавить задание. Тем кто не дружит с командной строкой unix, могут добавить задание через cpanel (если она конечно установлена).

Причем добавив задание, 99% скрипт с первого, и даже со второго раза не запустится. Проблема в том что вы не видите сообщения об ошибка.

Добавление в крон выглядит примерно так:

<?php
while(true) {
    
1. Добавляем задание (указать запуск каждую минутуиначе просто
    не сможем проверить что добавили правильно
)

    
2. Ждем пару минут пока cron запустит скрипт

    3. Залезаем по фтп в папку где ожидаем увидить лог файл
Скорее всего либо
    его там не будет
либо он пустой.

    
4. Начинаем судорожно проверять путиОшибиться можно в пути до php
    
(обычно его выпытывают у хостера), пути до скриптапути до лога.
    
Даже если все правильнолог файл все равно может быть пустой,
    
потому что ошибка может быть в самом скриптеЕсли догадались залезть
    в общий error_log сайта 
(а где лежит этот файлнужно еще выяснить)
    
то может быть найдете ошибкуа может и нет :)
    
    
5. Вроде бы нашли ошибкуисправляемцикл повторяется
}
?>

Цикл может повторяться по многу раз, отнять n-е кол-во нервных клеток и спокойно растянуться на несколько дней (личный опыт). В этот увлекательный процесс вносит разнообразие переписка с хостером, который невозмутимым тоном отвечает "мы не занимаемся отладкой клиенских скриптов".

Решение

Определение настроек хостинга при инсталяции

Автоматическое определение вариантов запуска
При инсталяции на сайт, шикарно сам определит и протестирует возможные варианты запуска. Скорее всего, от вас никакой информации не потребуется.

Автоматическое добавление скриптов.

Ручное добавление скрипта
Для этого есть кнопочка "найти новые скрипты". Определяет очень просто: в скрипте должна быть метка //for_run_shikarno . Дополнитель, по возможности, сформирует название и описание скрипта из первого комментария. После чего скрипт можно запускать и тут же, в режиме реального времени, смотреть как он работает. Впрочем, есть возможность добавить скрипт и вручную.

Неудобство №3 - не понятно что работает

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

Решение

Все просто и наглядно.

Неудобство №4 - просмотр логов

  1. Чтобы посмотреть лог, нужно скачать его по фтп или открыть через ssh.
  2. Часто логи бывают не маленького объема, на скачивание можно потратить много времени. К тому же открывать большой лог надо еще уметь (стандартный блокнот 100% повиснет) да и смотреть их в любом случае неудобно.
  3. открыв лог, можно обнаружить мешанину из html тегов. Не очень приятно в этом копаться.

Итого: много лишних телодвижений. Что привод к тому, что в лог смотрят в самую последнюю очередь. А значит теряют время, потому что там проще всего определить ошибку.

Решение

Просмоторщик логов

Достаточно щелкнуть на кнопочку рядом с нужным процессом и лог откроется в отдельной вкладке браузера через специальный скрипт, который покажет конец лога (истина обычно там). Это скрипт делит лог на кусочки и отправляет в браузер только нужную вам часть, что позволяет смотреть логи любого объема. Вы можете свободно перемещаться по этим частям. Есть поиск (поиск происходит по всему логу)

Неудобство №4 - отладка и устранение проблем

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

Решение

Берегите свои нервы, используйте Шикарно. Идея написать Шикарно как раз возникла из желания упростить жизнь при создании meksikanets.ru

Многопоточный запуск php скриптов

Иногда возникает такая необходимость. Существует несколько способов: неблокирующие сокеты, fork, multicurl, запуск скрипта несколько раз. В гугле на эту тему достаточно материала.

Я реализовывал разные варианты. По своему опыту, могу сказать что наиболее простой способ - запуск скрипта несколько раз. Конечно он требует несколько больших ресурсов, чем тот же multicurl. Зато это компенсируется легкость написания, гибкостью и простой отладкой.

Схема такого скрипта примерно следующая:

<?php
while(true) {
    
#1
    
блокируем таблицу/файл
    берем некоторое кол
-во данных для обработкиЕсли их нетзавершаем работу скрипта
     ставим статус у этих данных что они обрабатываются
    
#2
    
делаем необходимые операции с данными

    
#3
    
сохраняем результат
    ставим статус у данных что они обработаны
}
?>

Где нужна многопоточность:

  • сбор информации из интернета (http запросы - слабое место)
  • рассылка почтовых сообщений пользователям сайта/форума (не путать со спамерством, там другие объемы и другие технологии)

Сбор и упорядочивание всех ваших скриптов в одном месте

Эта проблема возникает в основном у оптимизаторов. Куча скриптов, разбросанных по одному или нескольким сайтам. Пока все это используешь каждый день, проблем особых не возникает. Но стоит не надолго переключиться и догадаться чем занимается файл parser.php, как надо его запускать (далеко не все скрипты имеют формы, многие просто берут данных из файлов) можно только открыв исходник.

Шикарно позволяет собрать все ваши скрипты на разных сайтах в одном месте с названиями и описаниями. Переделать скрипт, для запуска через Шикарно очень просто, достаточно в начале скрипта вставить: <?php
//for_run_shikarno
include "абсолютный_путь_до_shikarno/reg_potok.php";
?>

Контроль работоспособности множества сайтов из одного места

Панелька позволяет управлять скриптами на разных сайта из одного места. Если где то скрипт стал работать не правильно, вы об этом узнаете не от недовольных пользователей или потому что что-то стало работать не так. А от Шикарно.

Этому также способствует раздел "ошибки", где собираются все ошибки из error_log, удаляются дубли, группируются по сайтам, папкам и файлам [картинка] и времени последнего появления. Обычно файлы error_log размазаны по директориям сайта и в них заглядывают в самую последнюю очередь. А ведь именно там будет отображена ошибка, которая например ИНОГДА возникает при авторизации ваших клиентов. Только найти ее там будет невозможно, потому что она будет окружена мегабайтами Notice-ов и прочим хламом.