我只是想知道PHP在后台的表现如何。
假设我有一个PHP,它创建一个数组并用名称填充它。
$names = Array("Anna", "Jackson" .... "Owen");
然后我有一个输入字段,它会将每个按键上的值发送给PHP,以检查包含该值的名称。
每次通话都会创建阵列吗?我也在循环之前对数组进行排序,因此输出将按字母顺序排列。这会占用AJAX调用的时间吗?
如果答案是肯定的,有没有办法解决这个问题,那么数组是否已准备好在每次通话时循环播放?
答案 0 :(得分:6)
AJAX请求和“普通”http请求之间没有区别。所以是的,将为每个请求创建一个新的php实例。如果解析脚本所花费的时间是个问题,您可以使用APC之类的内容 如果这些数组是在运行时创建的,那么这个问题就是一个问题,您可以在memcache
之类的请求中存储和共享请求之间的值。答案 1 :(得分:2)
无论您使用什么方法创建数组,如果它在代码中,如果您将其从数据库,文本文件或任何其他来源中拉出来,当Web服务器获取http请求时(无论是是不是Ajax)它将开始执行PHP脚本,在内存中创建它的空间,然后创建数组。 PHP脚本只有一个入口点,当http rquest指向它时,它就是它的第一行。 (或者当包含另一个脚本时,它是相同的)
答案 2 :(得分:1)
据我所知,每次都需要创建数组,因为AJAX会在输入输入字段的每个按键上发出新的服务器请求。如果您创建脚本,则每个服务器请求都将创建该数组。
更好的方法是使用数据库来存储名称。
答案 3 :(得分:1)
是的,每次运行PHP脚本时都会创建和销毁它。
如果这是一个问题,你可以看看在某个地方(例如在会话或数据库中)保存这些数据,但我会问你是否真的会导致你这么多的性能问题,你需要这样做吗?
答案 4 :(得分:1)
(这不是你问题的直接答案,但如果你担心表演会有所帮助)
你这样说:
然后我有一个输入字段 发送每个按键的值 PHP
在这种情况下,一旦按下一个键就不会将请求发送到服务器是很常见的事情:你通常要等几毫秒(介于100毫秒到150毫秒之间,我会说),看看如果该区间内没有其他按键:
作为旁注:如果您的数据监听不是太大(20个名称肯定没问题; 100个名称可能会好; 1000可能太多),您可以将其直接存储为Javascript数组,而不是一个Ajax请求:这是最快的方式(没有客户端 - 服务器调用),它根本不会加载你的服务器。