You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在指定时间触发PHP函数(含发往Discord的cURL函数)

PHP指定时间触发Discord cURL请求实现方案

方案1:服务器端一次性定时任务(推荐)

首先把你的cURL逻辑封装为独立PHP脚本,示例如下:

<?php
// 你自己的业务逻辑,以下为Discord Webhook请求示例
$discordWebhook = '你的Discord Webhook链接';
$postData = [
    'content' => '定时触发的消息内容',
    // 可补充embeds等其他Discord支持的参数
];
$ch = curl_init($discordWebhook);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($postData));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_exec($ch);
curl_close($ch);
?>

如果你用的是Linux服务器,直接用at命令配置一次性定时任务即可:

  • 先将目标时间(如2021年8月18日EST上午10点)转换为服务器所在时区的对应时间,避免时区误差
  • 终端执行at 10:00 08/18/2021(替换为转换后的服务器时间)
  • 输入执行命令 php /你的脚本存放路径/discord_request.php,按Ctrl+D保存即可,系统会在指定时间自动执行脚本
    如果是需要周期性重复触发,用crontab -e添加对应时间规则即可。

方案2:PHP常驻进程延迟执行

如果无法操作服务器定时任务,且定时间隔较短(不超过24小时),可以直接在PHP代码中做时间判断:

<?php
// 关闭PHP执行超时限制
set_time_limit(0);
// 指定目标时间与时区
$targetTime = new DateTime('2021-08-18 10:00:00', new DateTimeZone('EST'));
$waitSeconds = $targetTime->getTimestamp() - time();
if ($waitSeconds > 0) {
    // 休眠到目标时间点
    sleep($waitSeconds);
}
// 到点后执行cURL逻辑
// ... 此处放你的cURL代码
?>

注意:该方案需要保持PHP进程一直运行,进程被中断后任务会失效,不适合长时间定时场景

方案3:Discord Bot内置定时

如果你已经部署了Discord PHP Bot,可以直接用Bot框架的定时组件实现:

  • 部署常驻运行的Discord Bot服务
  • 调用框架的定时任务接口,注册一次性执行任务,指定到目标时间点触发你要的cURL请求或者Discord消息推送即可
    该方案适合已有Bot运行环境的场景,不需要额外新增定时服务。

注意事项

  • 所有时间计算必须统一时区,避免因时区不一致导致触发时间偏差
  • 调用Discord接口时注意遵守官方速率限制,避免触发封禁
  • 重要任务建议添加日志记录,方便排查执行失败的问题

内容的提问来源于stack exchange,提问作者AnotherUser

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 08:27:03