Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-存储、更新和读取数组的最佳方式?_Php_Jquery_Arrays_Ajax_Post - Fatal编程技术网

PHP-存储、更新和读取数组的最佳方式?

PHP-存储、更新和读取数组的最佳方式?,php,jquery,arrays,ajax,post,Php,Jquery,Arrays,Ajax,Post,基本上,我正在尝试建立一个网站,让不同的用户可以点击框并输入信息,并且每当有人更改框的信息(如文本或背景颜色)时,框就会实时更新。填写表单时,这些信息会发送到服务器。表单通过jQuery POST使用“setBoxI”键发送。客户端通过jQuery使用“getBoxI”键发布到该php文件,每隔X秒更新一次页面 问题是,即使使用setBoxI键更新数组,下次使用getBoxI时,数组也会恢复为默认值,如box1、w、pink所示,而不是用户输入的值 显然,这不是存储此类数据的最佳方式。我相信这是

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

问题是,即使使用setBoxI键更新数组,下次使用getBoxI时,数组也会恢复为默认值,如box1、w、pink所示,而不是用户输入的值

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


如果只使用nginx、jquery和php,有什么更好的方法来实现这一点呢?

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

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

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

<?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].',';
}

?>

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

最简单的方法可能是将序列化数据存储到文件中。请这样读:

<!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>
$boxes = json_decode(file_get_contents('boxes'));
在代码和存储的开头,如下所示:

<!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>
$boxes = json_decode(file_get_contents('boxes'));
在用户更新它们之后

但您必须考虑安全性、并发性、性能和其他问题,使用数据库可以有效地解决这些问题