代码之家  ›  专栏  ›  技术社区  ›  peirix

是否在每次调用Ajax时实例化php文件?

  •  2
  • peirix  · 技术社区  · 15 年前

    我只是想知道PHP在后台的表现如何。

    假设我有一个PHP,它创建一个数组并用名称填充它。

    $names = Array("Anna", "Jackson" .... "Owen");
    

    然后我有一个输入字段,它会将每个按键的值发送给PHP,以检查包含该值的名称。

    每次调用都会创建数组吗?我还对数组进行排序,然后循环遍历它,这样输出将按字母顺序排列。这会占用Ajax调用的时间吗?

    如果答案是肯定的,那么是否有办法解决这个问题,这样数组就可以在每次调用时循环使用了?

    5 回复  |  直到 11 年前
        1
  •  6
  •   VolkerK    15 年前

    Ajax请求和“普通”HTTP请求之间没有区别。所以是的,将为每个请求创建一个新的PHP实例。如果分析脚本所需的时间有问题,可以使用 APC .
    如果这些数组是在运行时创建的,并且所花费的时间是一个问题,那么您可能会在请求之间存储和共享这些值,比如 memcache

        2
  •  2
  •   Petruza    15 年前

    无论您使用什么方法创建数组,如果它在代码中,如果您将它从数据库、文本文件或任何其他源中拉出,当Web服务器收到HTTP请求时(无论它是否为Ajax),它都将开始执行PHP脚本,在内存中创建它的空间,然后创建数组。 一个PHP脚本只有一个入口点,当HTTP RQUEST指向它时,它是第一行。(或包含另一个脚本时,相同)

        3
  •  1
  •   Shaun Bohannon    15 年前

    据我所知,它每次都必须创建数组,因为Ajax将对输入字段上的每个键发出一个新的服务器请求。如果要创建脚本,则每个服务器请求都将创建数组。

    更好的方法是使用数据库来存储名称。

        4
  •  1
  •   Tom Haigh    15 年前

    是的,它将在每次运行PHP脚本时被创建和销毁。

    如果这是一个问题,您可以考虑将此数据保存在某个地方(例如会话或数据库中),但我会问它是否真的导致了您需要执行此操作的性能问题?

        5
  •  1
  •   Pascal MARTIN    15 年前

    (这不是对你问题的直接回答,但如果你关心表演的话,这会有所帮助)

    你这样说:

    然后我有一个输入字段,它将 将每次按键的值发送到 PHP

    在这种情况下,通常情况下,在按下一个键时不向服务器发送请求:您通常会等待几毫秒(我会说,在100 ms到150 ms之间),以查看该间隔中是否没有另一个键按下:

    • 如果用户键入多个键,他通常键入的速度比您等待的时间快,因此,您只发送最后一次按键的请求,而不是每个按键
      • 如果用户键入4个字母,您只执行1个请求,而不是4个;这对您的服务器的健康很好:-)
    • 说到用户的时间:等待100毫秒加上到服务器、运行脚本和从服务器返回的时间几乎与不先等待100毫秒相同;所以,这对用户来说并不坏。

    旁注:如果您的数据列表不太大(20个名称肯定可以;100个名称可能可以;1000个可能太多),您可以将其直接存储为一个javascript数组,而不执行Ajax请求:这是最快的方式(没有客户机-服务器调用),它根本不会加载您的服务器。