【问题标题】:Add a Delay for Sending SMS to User Laravel添加延迟发送短信给用户 Laravel
【发布时间】:2021-08-15 10:55:12
【问题描述】:

在我的项目中,我想在赢得指定游戏后向用户发送奖励短信。 所以我已经在GameController 中实现了代码,如下所示..

//some data
$this->send($mobile_number, $message);
//some data

发送函数定义为Trait,如下所示

public function send($mobile_number, $message)
{
    $username = config('app.filee')['username'];
    $password = config('app.file')['password'];
    $sender_id = config('app.file')['sender_id'];


    $url = "URL...username=" . $username . "&password=" . $password . "&from=" . $sender_id . "&to=" . $mobile_number . "&content=" . urlencode($message);

    $curl = curl_init();

    curl_setopt_array($curl, array(
        CURLOPT_URL => $url,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_ENCODING => '',
        CURLOPT_MAXREDIRS => 10,
        CURLOPT_TIMEOUT => 0,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
        CURLOPT_CUSTOMREQUEST => 'POST',
    ));

    $response = curl_exec($curl);
    curl_close($curl);
    \Log::info(['SMS_RESPONSE' => $response, 'SENT_MESSAGE' => $message]);
    return;
}

我怎样才能将此发送短信延迟到 5 分钟?

在功能上不做很多改动?

【问题讨论】:

  • 使用 Laravel 队列并设置延迟。更多信息in the docs.
  • @Peppermintology 对不起,我是 laravel 的新手.. 我需要添加一个工作类吗?如果我需要,我应该在哪里写 send()?.. 你能告诉我工作流程吗..?
  • 我不只是发布神奇的代码,我建议您看看一些在线教程,例如this one which is quite quickthis one which goes in to more depth

标签: laravel


【解决方案1】:

创建一个负责通过短信发送消息的作业(将发送逻辑放在该文件或另一个文件中并从那里调用它)

然后将此作业排队等待在您想要的延迟后发送。

This 问题可以帮助创建类。 This会帮你加个延迟

根据您的需要调整此答案,这可能是一个很好的练习。祝你好运

【讨论】:

  • 我们可以使用回调函数而不使用带有调度的作业类并为此添加延迟吗? dispatch(function () use ($mobile_number,$message) { $this->send($mobile_number, $message); })->delay(now()->addMinutes(1));
  • 我认为不可能(实际上不知道,必须搜索一下)。但是最好使用作业类,因为它不会在实际发送短信时延迟将要发回的响应。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-04
  • 1970-01-01
  • 2018-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多