16

我需要将大约 200x50(行、列)的表值从 jQuery 发布到 PHP。两种选择:

1)将其作为具有 10,000 个变量的数组发送(增加 php.ini max_input_vars)。

2) 将数组序列化为 JSON 字符串,将其作为字符串发布并在服务器端的 PHP 中解码。

什么是可取的?选项 1 有任何潜在问题吗?

谢谢


PS。更新。在高达 250x50 单元格的大型输入表上测试这两种药水后,看起来第一个选项要快得多:1-2 秒 vs ~17-20 秒的 JSON 字符串。

瓶颈是到服务器的数据传输时间,因为对象到 JSON 和反向事务几乎是即时的(几毫秒)。

4

5 回答 5

0

将其序列化为 JSON 字符串,但使用 json_encode() 和 json_decode() 因为它要快得多。将变量放入对象中,然后将其序列化。

此外,javascript 应该做更多的工作,因为它是客户端做的,这不会使服务器承受如此重的负载。

于 2013-11-03T12:01:30.193 回答
0

我认为有很多因素。你在哪个环境下工作,服务器和客户端在同一台电脑上?你必须每天或每小时都这样做吗?

同一台服务器上的其他项目是否可以响应较慢?在一两个月内你会有超过 10K 的 vars 吗?

如果您像第一个选项一样发布数据,因为Javascript速度更快,那么PHP您有时可能会丢失一些数据。

如果您可以异步执行此操作,请寻找RabitMQ它是一个消息服务器,在服务器准备好时执行人员(它也很快!) http://www.rabbitmq.com/

于 2013-10-29T13:40:56.760 回答
0

我用正文中的二进制数据向我们的服务器发送 PUT 请求,可能与 10k 文本记录相当,并且传输非常快。我可能想知道那里发生了什么,在一对一的转移时间中是否有什么东西会误导你。例如,post vars 可能认为“传输”是请求的不同阶段。或者,如果您在带有行/列名称或其他内容的 json 结构中添加了很多无关紧要的包袱?

如果事实证明这是真的并且每种方法都具有相同的性能 - 我个人会在正文中使用结构化 JSON,因为与一堆编码的后变量名称相比,它看起来更清晰、更容易查看/调试。

另外 - 我不知道你的应用程序做了什么,所以你的方法可能是完全合适的。但我可能会考虑是否可以根据需要发送数据,而不是一次发送整个表。(当人们不回答我的问题并试图给我一些替代的做事方法时,我会很生气,所以最后一点要持保留态度!但人类会触及 10k 记录似乎确实不寻常 - 需要它们都被同时发送到服务器)

于 2013-10-02T21:24:13.123 回答
0

你已经回答了你自己的问题。在开发软件时应该使用的性能和代码质量之间存在合理的折衷。

因此 Json 在双方(Javascript 和 PHP)上都受支持,并在您的代码中提供了更好的结构。

于 2013-10-29T07:00:37.923 回答
0

我会建议选项#1的变体。众所周知,JSON 编码器和解码器存在错误并且存在跨平台问题,但发布数千个变量可能是个问题。相反,您可以将所有 post 变量作为单个 application/x-www-form-urlencoded post 变量传递,然后在 PHP 中使用 parse_str() 对它们进行解码。

Javascript:

data = "data="+escape("v[0][0]="+escape(v[0][0]));

PHP:

parse_str($_POST['data'],$data);
于 2013-11-05T02:31:41.610 回答