【问题标题】:PHP - Best way to store, update, and read an array?PHP - 存储、更新和读取数组的最佳方式?
【发布时间】:2023-03-17 20:49:01
【问题描述】:
<?php

$boxes = array
(
    array("box1","w","pink"),
    array("box2",".", "aqua")
);

if(isset($_POST['getBoxI'])) {
    $ind = $_POST['getBoxI'];
    echo $boxes[$ind][0].','.$boxes[$ind][1].','.$boxes[$ind][2].',';
}

if(isset($_POST['setBoxI'])) {
    $ind = $_POST['setBoxI'];
    $fill = $_POST['setBoxFill'];
    $col = $_POST['setBoxCol'];
    $boxes[$ind][1] = $fill;
    $boxes[$ind][2] = $col;
    echo $boxes[$ind][0].','.$boxes[$ind][1].','.$boxes[$ind][2].',';
}

?>

基本上,我正在尝试建立一个网站,让不同的用户可以单击框并输入信息,并且只要有人更改框的信息(例如文本或背景颜色),框就会“实时”更新。填写表格后,该信息将发送到服务器。表单使用“setBoxI”键通过 jQuery Posting 发送。客户端每 X 秒通过 jQuery Posting 更新页面到这个 php 文件,使用 'getBoxI' 键。

问题在于,即使您使用 setBoxI 键更新数组,下次使用 getBoxI 时,数组也会返回显示的默认值(“box1”、“w”、“pink”)而不是值用户输入的。

显然这不是存储此类数据的最佳方式。我相信这是因为每次调用这个 php 文件时,它都会打开一个新的文件副本,其中输入了默认数组,而不是用户通过 setBoxI 键创建的数组。

在只使用 nginx、jquery 和 php 的情况下,有什么更好的方法来完成此任务?

【问题讨论】:

    标签: php jquery arrays ajax post


    【解决方案1】:

    另一个设计选择是使用 jQuery AJAX。您可以对此进行编码,以便每次按键、鼠标单击或计时器事件都会导致数据异步发送到您的服务器。

    数据可以发送到您的服务器,您的服务器可以返回所有用户的组合数据。

    一个非常简单的例子是通过单击按钮将文件从服务器加载到 HTML 控件中:

    <!DOCTYPE html>
    <html>
    <head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <script>
    $(document).ready(function(){
        $("button").click(function(){
            $.ajax({url: "demo_test.txt", success: function(result){
                $("#div1").html(result);
            }});
        });
    });
    </script>
    </head>
    <body>
    
    <div id="div1"><h2>Let jQuery AJAX Change This Text</h2></div>
    
    <button>Get External Content</button>
    
    </body>
    </html>
    

    【讨论】:

      【解决方案2】:

      您似乎必须在请求之间的某处存储您的盒子数据。可能的方法是使用数据库、文件、一些缓存引擎、网络存储等等。

      可能最简单的开始方法是将序列化数据存储到文件中。像这样阅读它们:

      $boxes = json_decode(file_get_contents('boxes'));
      

      在您的代码开头并存储如下:

      file_put_contents('boxes', json_encode($boxes));
      

      用户更新后。

      但你要注意安全、并发、性能等问题,使用数据库可以有效解决。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-10-31
        • 1970-01-01
        • 2021-12-04
        • 1970-01-01
        • 1970-01-01
        • 2021-09-13
        • 1970-01-01
        • 2014-06-04
        相关资源
        最近更新 更多