Ответ
Помимо основной веб-разработки на PHP, у меня есть опыт создания консольных приложений и скриптов для автоматизации рутинных задач, что часто было необходимо в проектах.
Основной опыт — это PHP CLI (Command Line Interface):
- Архитектура: Разрабатывал долгоживущие демоны-воркеры для обработки очередей (например, с использованием
rabbitmq-cli-consumer). - Парсинг данных: Писал скрипты для сбора и обработки данных из различных источников (API, CSV, базы данных).
- Администрирование: Создавал утилиты для выполнения массовых операций в базе данных, генерации отчетов и очистки кешей.
Пример CLI-скрипта на PHP для обработки задач из очереди:
#!/usr/bin/env php
<?php
// worker.php
require __DIR__ . '/vendor/autoload.php';
use PhpAmqpLibConnectionAMQPStreamConnection;
$connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');
$channel = $connection->channel();
$channel->queue_declare('email_queue', false, true, false, false);
echo " [*] Waiting for messages. To exit press CTRL+Cn";
$callback = function ($msg) {
echo ' [x] Received ', $msg->body, "n";
$data = json_decode($msg->body, true);
// Логика отправки email...
sleep(2); // Имитация работы
echo " [x] Donen";
$msg->ack(); // Подтверждаем обработку
};
$channel->basic_consume('email_queue', '', false, false, false, false, $callback);
while ($channel->is_open()) {
$channel->wait();
}
Также в рамках самообразования и решения конкретных задач (например, анализ логов) использовал Python для написания небольших скриптов и Bash для автоматизации деплоя и серверного администрирования.
Ответ 18+ 🔞
А, ну это вообще отдельная песня, про консольные штуки. Помимо того, что я там веб-сайты на PHP леплю, у меня ещё и опыт овердохуища по части скриптов и разных демонов, которые в фоне работают. Это ж постоянно нужно было какую-то рутину автоматизировать, чтобы самому не делать одно и то же по сто раз, ёпта.
Основная моя фишка — это PHP CLI, то есть работа из командной строки:
- Архитектура: Делал таких долгоживущих демонов-воркеров, которые задачи из очереди обрабатывают. Сидят себе тихо, ждут, пока им в рот работу не положат. Использовал, например,
rabbitmq-cli-consumer— штука годная, хотя иной раз так доверия ебать ноль к стабильности, что волнение ебать. - Парсинг данных: Писал скрипты, которые как маньяки данные со всяких API, из CSV-шек или баз выгребают, обрабатывают и куда надо кладут. Иногда источники такие кривые, что подозрение ебать чувствую — специально, сука, сделано, чтобы мозг вынести.
- Администрирование: Делал утилитки, чтобы в базе данных что-то массово поменять, отчёты сгенерить или кеши почистить. Когда руками делать — это пиздец, а скрипт накатал — и через минуту всё готово, красота.
Вот, смотри, пример такого CLI-скрипта на PHP, который задачи из очереди обрабатывает:
#!/usr/bin/env php
<?php
// worker.php
require __DIR__ . '/vendor/autoload.php';
use PhpAmqpLibConnectionAMQPStreamConnection;
$connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');
$channel = $connection->channel();
$channel->queue_declare('email_queue', false, true, false, false);
echo " [*] Waiting for messages. To exit press CTRL+Cn";
$callback = function ($msg) {
echo ' [x] Received ', $msg->body, "n";
$data = json_decode($msg->body, true);
// Логика отправки email...
sleep(2); // Имитация работы
echo " [x] Donen";
$msg->ack(); // Подтверждаем обработку
};
$channel->basic_consume('email_queue', '', false, false, false, false, $callback);
while ($channel->is_open()) {
$channel->wait();
}
Ну и, конечно, для самообразования или когда совсем уж специфичная задача вставала (типа анализа логов, где регулярки дикие нужны), брал в руки Python для мелких скриптов. А для автоматизации всякого деплоя и серверного администрирования Bash — куда ж без него, без этого старого доброго костыля. Всё-таки иногда проще на коленке склепать shell-скрипт, чем городить огород на чём-то серьёзном.