使用PHP将转发的URL参数保存到MySQL DB



我有一个网站,客户发送批量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...
}

因此,我将这些数据存储在DB中,并以间隔更新记录。

当聚合器同时向我的URL example.com/dlr.php?uniqueid=1234332423&status=success&cause=delivered&time=12312432423发送同时请求时,我的专用服务器崩溃了,因此上述URL一次一次多次,有时是数千次,当我的客户以100,000个数字发送消息以及所有这些100,000个数字交付报告已转发到我的脚本。

可能是由于这个原因,我的服务器崩溃并变得无法访问。

处理与此脚本并存并将值存储到我的mysql db的最佳方法是什么?

感谢您的帮助,谢谢

问题可能与您的数据库有关 - 而不是脚本本身。我将检查您允许的最大连接数量...默认情况下,此数字设置为100。您可能拥有的最大连接数是4,294,967,295

检查此链接以获取有关如何更改它的信息:mySQL连接限制

另外,您是否可以在崩溃前,之中和之后发布一些链条的日志?这样我们就可以更好地了解发生了什么以及为什么...


一个更好的方法是将数据导入的数据交错。IE;将收据写入临时文本文件 - 然后使用cron作业 - 每x分钟;阅读临时文本文件,并将第一批数据导入到您的数据库中。

这主要是评论(但有点长)。

您需要在这里统治您的期望。您对问题的描述和分析都是错误的。

您将不会在这里得到有效的答案,因为需要收集大量信息来确定问题的真实含义以及如何解决问题。首先,您应该在内存,CPU,加载,并发连接,网络过程数量,查询响应时间的数量上收集适当的指标。您甚至都不认为该运行的操作系统与您的问题有关!

但是,服务器崩溃应该与容量无关 - 多余的需求不应导致您的服务器崩溃。这意味着可能正在发生很多其他事情。并找出他们需要阅读的日志需要的内容。如果"崩溃"与需求很高相吻合,那么要检查的事物列表中的高度将是一个狡猾的磁盘控制器或错误配置的WebServer MOMEMER MOMEMERCOMPOMIT OOMKILLER。两种情况都会在您的日志中留下大量证据。

您还需要完善您对系统从通常状态到所描述为"崩溃"状态时发生的事情的理解 - 要么要好得多。

最快的解决方案是要更难购买服务器,如果它没有解决,那么雇用专家可能比获取解决此问题所需的技能便宜。

(如果这确实是专用硬件,那么即使是最便宜的X86框也能够处理500多个并发连接和每秒1000次交易)。

最新更新