Можно установить модуль
Swoole PHP, и тогда все прелести таймеров, корутин и асинхронности – к вашим услугам.
Запускается один раз
php app.php
и процессы висят, работают.
Таймер на 10 секунд:
<?php
function run($timerid, $params) {
var_dump($timerid);
var_dump($params);
}
// Каждые 10 секунд выполнять функцию run
Swoole\Timer::tick(10000, "run", ["param1", "param2"]);
MySQL:
// Enable the hook for MySQL: PDO/MySQLi
Co::set(['hook_flags' => SWOOLE_HOOK_TCP]);
// Setup a coroutine context
Co\run(function() {
// Execute a query inside a coroutine
go(function () {
// Already setup the $pdo connection before...
$statement = $pdo->prepare("SELECT * FROM users LIMIT :limit, :offset");
$statement->execute(['limit' => $limit, 'offset' => $offset]);
$data = $statement->fetchAll();
// Process $data result...
});
});
p.s. Swoole ещё умеет быть
WebSocket сервером. Сможете потом сделать в реальном времени уведомления об изменении цены, живые графики, чаты )