使用php服务异步通知

今天代码在审核注册用户通过时,发送会员短信。发现系统页面卡死了。这就是php同步执行造成的。网上找找发现有几做法。什么队列,workman,curl之类的。 分析了一下。workman太大,队列太麻烦,就一个短信功能使用它不划算了。后面分析了curl,一般是curl传post或get数据到一个链接地址。但是我担心使用域名的地址响应太慢。忽然想到使用php内置的server。这样curl访问127.0.0.1很快了。这个功能可以使用在非队列的异步环境中,如:邮件,短信,通知等`

//异步发送短信 function AsynSendSMS($phone,$sms_cn) {

//初始化

$curl = curl_init();

//设置抓取的url

$url = 'http://127.0.0.1:8080/index.php/Index/sendsms';

curl_setopt($curl, CURLOPT_URL,$url);

//设置头文件的信息作为数据流输出

curl_setopt($curl, CURLOPT_HEADER, 1);

//设置获取的信息以文件流的形式返回,而不是直接输出。

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

//设置post方式提交

curl_setopt($curl, CURLOPT_POST, 1);

//设置post数据
$post_data = array(

    "phone" => $phone,

    "sms_cn" => $sms_cn,

);

curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);

//执行命令
$data = curl_exec($curl);

//关闭URL请求
curl_close($curl);

//var_dump(__LINE__,$post_data,$data);

}

` liunx环境:

[root@H1822279819623 ~]# php -S 127.0.0.1:8080 -t /home/wwwroot/bthink3/cli_server >/dev/null 2>&1 &

PHP 5.6.39 Development Server started at Fri Feb 22 17:23:28 2019

Listening on http://127.0.0.1:8080

Document root is /bfsdata/wwwroot/bfsforexthink3/cli_server Press Ctrl-C to quit.

[Fri Feb 22 17:23:34 2019] 127.0.0.1:52352 [200]: /index.php/Index/sendsms

==成功。

注:cli_server是我的thinkphp的目录。

转载于:https://my.oschina.net/7795442/blog/3013731

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现支付异步回调通知机制可以分为以下几个步骤: 1. 在支付接口中设置回调通知地址,当支付完成后,支付平台会向该地址发送回调通知请求。 2. 在接收到回调通知请求时,首先需要验证该请求的合法性。可以通过验证请求参数的签名、订单号等信息来确保请求的合法性。 3. 验证通过后,需要更新订单状态,将订单状态改为已支付,并记录支付平台返回的交易号等信息。 4. 最后,需要向支付平台返回一个成功的响应,通知支付平台该回调通知已经处理完毕。 以下是一个简单的 PHP 实现示例: ```php <?php // 验证请求的合法性 $sign = $_POST['sign']; // 签名 $order_no = $_POST['order_no']; // 订单号 $amount = $_POST['amount']; // 支付金额 $transaction_id = $_POST['transaction_id']; // 交易号 if (verify_sign($sign, $order_no, $amount)) { // 更新订单状态 update_order_status($order_no, $amount, $transaction_id); // 返回成功响应 echo 'success'; } else { // 返回失败响应 echo 'fail'; } // 验证签名 function verify_sign($sign, $order_no, $amount) { // TODO: 实现签名验证逻辑 } // 更新订单状态 function update_order_status($order_no, $amount, $transaction_id) { // TODO: 更新订单状态逻辑 } ?> ``` 注意,以上代码仅为示例,实际的实现方式可能因支付平台的不同而有所差异。同时,为了确保支付安全,建议使用 HTTPS 协议来传输回调通知请求和响应。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值