PHP-存储、更新和读取数组的最佳方式?
基本上,我正在尝试建立一个网站,让不同的用户可以点击框并输入信息,并且每当有人更改框的信息(如文本或背景颜色)时,框就会实时更新。填写表单时,这些信息会发送到服务器。表单通过jQuery POST使用“setBoxI”键发送。客户端通过jQuery使用“getBoxI”键发布到该php文件,每隔X秒更新一次页面 问题是,即使使用setBoxI键更新数组,下次使用getBoxI时,数组也会恢复为默认值,如box1、w、pink所示,而不是用户输入的值 显然,这不是存储此类数据的最佳方式。我相信这是因为每次调用这个php文件时,它都会打开一个新的文件副本,其中输入了默认数组,而不是用户通过setBoxI键创建的数组PHP-存储、更新和读取数组的最佳方式?,php,jquery,arrays,ajax,post,Php,Jquery,Arrays,Ajax,Post,基本上,我正在尝试建立一个网站,让不同的用户可以点击框并输入信息,并且每当有人更改框的信息(如文本或背景颜色)时,框就会实时更新。填写表单时,这些信息会发送到服务器。表单通过jQuery POST使用“setBoxI”键发送。客户端通过jQuery使用“getBoxI”键发布到该php文件,每隔X秒更新一次页面 问题是,即使使用setBoxI键更新数组,下次使用getBoxI时,数组也会恢复为默认值,如box1、w、pink所示,而不是用户输入的值 显然,这不是存储此类数据的最佳方式。我相信这是
如果只使用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'));
在用户更新它们之后
但您必须考虑安全性、并发性、性能和其他问题,使用数据库可以有效地解决这些问题