我有一个客户可以发送大量 SMS 的网站,因此我将 SMS 请求转发给聚合商,他通过印度的移动运营商发送消息。
现在,我面临的问题是。发送 SMS 后,要获得实时发送报告,我需要使用 PHP 脚本从聚合器接收参数。所以我做了一个脚本 example.com/dlr.php 并且脚本包含
<?php
include('config.php');
$uid = sanitize($_GET['uniqueid']);
$status = sanitize($_GET['status']);
$cause = sanitize($_GET['cause']);
if($uid != "" || $status != "" || $cause != "" ){
$sql = "INSERT INTO `table` .....";
//execute code...
}
所以使用它,我将该数据存储在我的数据库中并定期更新记录。
当聚合器同时向我的 URL example.com/dlr.php?uniqueid=1234332423&status=success&cause=delivered&time=12312432423
发送请求时,我的专用服务器崩溃了,因此上述 URL 出现多次一次,有时数千次,当我的客户发送 100,000 个号码的消息时,所有这 100,000 个号码的发送报告都被转发到我的脚本。
所以可能是因为这个原因,我的服务器崩溃了,无法访问。
处理与此脚本的并发连接并将值存储到我的 MySQL 数据库的最佳方法是什么?
感谢您的帮助,谢谢
最佳答案
问题可能出在您的数据库上,而不是脚本本身。我会检查您允许的最大连接数...默认情况下,此数字设置为 100
。您可以拥有的最大连接数是 4,294,967,295
查看此链接以获取有关如何更改它的信息:MySQL Connection Limit
此外,您能否发布一些您的服务器在崩溃之前、期间和之后的日志?这样我们就可以更好地了解发生了什么以及为什么......
更好的方法是错开数据导入。 IE;将您的收据写入临时文本文件 - 然后使用 cron 作业 - 每 X 分钟一次;读取临时文本文件并将第一批数据导入您的数据库。
关于php - 使用 PHP 将转发的 URL 参数保存到 MySQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41017439/