如何防止Ajax运行同一php文件的多个实例?

时间:2018-09-12 00:23:31

标签: php ajax

我的目标是要制作一个php文件,该文件每分钟最多可处理来自ajax的10000个帖子。我想了解一下我的方法是否不错,或者是否有更好的方法来处理这么多帖子请求。我可以想到我的代码有很多问题。

JavaScript积极地订阅了将信息发送到我的javascript的流媒体,然后我要从那里将发布数据发送到php文件,该文件首先将数据放入数组,其次是每分钟,将收集的信息发送到mysql表。

所以我必须确定几件事。首先,ajax函数仅使用php文件的相同实例,而不运行多个实例。这将确保所有数据进入mysql transferrence的同一php数组。另外,该数据信息不会混乱,因此我必须以某种实际有效的方式在php中标识我的数据变量。第三,因为我使用的是while循环,所以一旦实例化,我必须有一种成功的方法来关闭循环。

这是我的js:

subscription.addListener
    (
        onItemUpdate: function (updateInfo) 
        {
            // Lightstreamer published some data
            var epic = updateInfo.getItemName().split(":")[1];
            updateInfo.forEachField
            (
                function (fieldName, fieldPos, value) //foreach epic
                {
                    $.ajax
                    (
                        {
                             data: 
                             {
                                 epic: epic, 
                                 fieldName: fieldName, 
                                 price: value
                             },
                             type: 'POST',
                             url: 'compiler_and_send_to_mysqli.php',
                             success: function(data) 
                             {
                                  alert(data);
                             }
                        }
                    );
                }
            )
        }
   );

这是我的php:

$i = 0
if(isset($_POST['data']))
{
    $i = $i + 1;
    $data[$i] = $_POST['data'];
}
if (empty($current_time)) //set the original time for the while loop 
{
    // get current date time initally keep the php instance running 
    // continuously (until the seesion closes?) in format: '2018:09:12-12:11:20';
}
while($current_time != '2099:01:01-01:01:01') //keeps php loop running for more ajax posts.
{
    $hour = date('s'); 
    if($hour == '00') // tests each minute, limits loop to 1 minute
    {
        $array[$set_for_mysqli] = $array_[$inserting_into];
        $array_[$inserting_into] = array(); //empty array
        // insert $array[$set_for_mysqli]; in mysqli dbase
        $array[$set_for_mysqli]; = array(); //empty array
        // break loop 
    }
    else
    {
        // insert $data[$i] from ajax post in to php $array_[$inserting_into];
        $data[$i] = unset($data[$i]);
    }
}

我的问题是:

  1. 在这种情况下,AJAX是否会运行php文件的多个实例,或者每分钟会使用同一实例10'000次?
  2. 如果帖子运行得如此之快,php变量是否会混淆,例如到第一个$ data [$ i]到达代码底部的插入阶段时,它现在是否可以包含来自第二个帖子的数据(如果说ajax帖子彼此在0.000001秒之内)?
  3. 是否有更好的方法来处理1万个ajax帖子,并且代码看起来像什么?
  4. 我应该使用会话吗?
  5. 是否有必要使用内存缓存?

谢谢。

0 个答案:

没有答案