Swoole是一个高性能的PHP异步网络通信引擎,它提供了数据库操作模块,可以方便地与数据库进行交互
pecl install swoole
然后,在php.ini文件中添加以下内容以启用Swoole扩展:
extension=swoole.so
<?php
$server = '127.0.0.1';
$port = 3306;
$user = 'username';
$password = 'password';
$dbname = 'database_name';
$conn = new Swoole\Database\MySQL($server, $port, $user, $password, $dbname);
if (!$conn->connect()) {
echo "连接失败: " . $conn->error;
exit;
}
function cleanExpiredUsers()
{
global $conn;
// 设置过期时间(例如:1天)
$expire_time = time() - 86400;
// 编写SQL查询以删除过期的用户数据
$sql = "DELETE FROM users WHERE last_login < :expire_time";
// 使用预处理语句绑定参数并执行查询
$stmt = $conn->prepare($sql);
$stmt->bindParam(':expire_time', $expire_time, PDO::PARAM_INT);
$result = $stmt->execute();
if ($result) {
echo "成功删除 " . $result['affected_rows'] . " 个过期用户数据。\n";
} else {
echo "删除失败: " . $conn->error;
}
}
cleanExpiredUsers()
函数来执行数据清理操作。例如,你可以使用Swoole的定时器功能来定期执行这个函数:<?php
// 创建一个定时器,每隔60秒执行一次cleanExpiredUsers函数
$interval = 60;
$task = function () {
global $conn;
cleanExpiredUsers();
};
$server = new Swoole\Server("0.0.0.0", 9501);
$server->on('Start', function ($server) use ($interval) {
echo "Swoole服务器启动在 http://0.0.0.0:9501\n";
});
$server->on('Task', function ($server, $fd, $reactor_id, $data) use ($interval) {
$task($interval);
});
$server->start();
这样,你就可以使用Swoole数据库操作模块实现数据清理功能了。请注意,这只是一个简单的示例,实际应用中可能需要根据具体需求进行调整。