$stmt = $pdo->prepare("SELECT * FROM users WHERE id=?");
$stmt->execute([$id]);
$user = $stmt->fetch();
$user = $em->getRepository(User::class)->find($id);
Все хорошо работает, пока бизнес не меняет логику, меняться запрос и получается много переделывать.а переписывать и тестировать процедуры в субд проще? тем более, скорее всего, с изменением процедуры придется переписывать код все равно.
И как решают это другие?
У меня такое решение в голову приходит:
Каждый консюмер периодически обязан подать признаки жизни - в некую таблицу БД записывать дату и время активности.
И по крону, другой скрипт проверяет записи в таблице, если какой-то консюмер долго не обновлял запись - убить процесс по pid.
[Service]
...
WatchdogSec=30s
Restart=on-failure
Каждый консюмер периодически обязан подать признаки жизни - в некую таблицу БД записывать дату и время активности.
new Phar('my_new_phar.phar')
создаёт новый архивversion: '2.0'
services:
rabbitmq:
image: rabbitmq:3-management-alpine
container_name: rabbitmq
volumes:
- ./.docker/rabbitmq/etc/:/etc/rabbitmq/
- ./.docker/rabbitmq/data/:/var/lib/rabbitmq/
- ./.docker/rabbitmq/logs/:/var/log/rabbitmq/
ports:
- "5672:5672"
- "15672:15672"
nginx:
image: nginx:latest
ports:
- "8000:80"
# монтируем директории, слева директории на основной машине, справа - куда они монтируются в контейнере
volumes:
- ./hosts:/etc/nginx/conf.d
- ./www:/var/www
- ./logs:/var/log/nginx
links:
- php
php:
# у нас свой образ для PHP, указываем путь к нему и говорим что его надо собрать
build: ./images/php
links:
- mysql
- rabbitmq
volumes:
- ./www:/var/www
mysql:
image: mariadb
ports:
- "3306:3306"
volumes:
- ./mysql:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: secret
environment:
PMA_HOST: mysql
MYSQL_USERNAME: root
MYSQL_ROOT_PASSWORD: secret
$ch = curl_init('https://api.um-agency.com/feed/tracks/get?pass_key=bamboo5e4d9fcf47abb&block_type=3&offset=0&count=100');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
"Accept: application/json", //
"User-Agent: VK_Music/4.2.1 (Android 4.2.4749 8.1.0)", // Получение списка топ 100 чарта вк, маскируясь под Boom
"Host: api.um-agency.com", //
"Accept-Encoding: utf-8",
"Connection: Keep-Alive"
));
$html = curl_exec($ch);
curl_close($ch);
$list_arr = json_decode($html);