Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.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 优化ajax视图计数sql命令以提高速度_Php_Sql_Ajax_Performance_Mysqli - Fatal编程技术网

Php 优化ajax视图计数sql命令以提高速度

Php 优化ajax视图计数sql命令以提高速度,php,sql,ajax,performance,mysqli,Php,Sql,Ajax,Performance,Mysqli,我有一个Wordpress驱动的站点,在上面我使用了wp超级缓存,因此我不得不通过ajax跟踪视图,而不是内联PHP。下面是通过ajax调用的PHP文件的核心。顺便说一句,代码并不是Wordpress特有的,但为了稍微解释一下,它会像update\u post\u meta()一样更新wp\u postETA表。它使用mysqli,并进行2sql查询来 确保要更新的postid有效 增加视图计数 我的问题是,这段代码是否存在一些性能问题,它是否会变得更好 代码摘录: 新代码: 这就是我最后使用的

我有一个Wordpress驱动的站点,在上面我使用了wp超级缓存,因此我不得不通过ajax跟踪视图,而不是内联PHP。下面是通过ajax调用的PHP文件的核心。顺便说一句,代码并不是Wordpress特有的,但为了稍微解释一下,它会像
update\u post\u meta()
一样更新
wp\u postETA
表。它使用mysqli,并进行2sql查询来

  • 确保要更新的postid有效
  • 增加视图计数
  • 我的问题是,这段代码是否存在一些性能问题,它是否会变得更好

    代码摘录: 新代码:

    这就是我最后使用的方法,将两个呼叫替换为一个呼叫:

    更新wp_postmeta SET meta_value=meta_value+1,其中post_id='“$post_id.”和meta_key='views'


    注意!这使得返回响应过时,因为我没有得到返回的当前视图计数。但另一方面,我保存了一个查询。

    您不能使用
    插入。。。在重复键
    结构上而不是检索/更新/存储?现在,您的代码相当活泼,可能会丢失命中率。差不多

    INSERT INTO wp_postmeta (meta_value, meta_key, post_id) VALUES (...)
    ON DUPLICATE KEY UPDATE meta_value=meta_value+1
    

    这会消除我的活泼。

    在我看来很好。我要说的唯一一件事是,如果这是一个后台任务,那么获取视图计数响应在生产环境中是没有用的(除非发生了我不知道的事情)

    因此,考虑到这些信息,没有理由事先验证postid。您可以删除第一条sql语句和$views计算,只使用update语句(如果它不是有效的id,那么它就不会更新任何内容)。如果在创建帖子时未设置此“视图”元键,请查看
    INSERT。。。在重复键上
    而不是更新


    如果您真的想保留json响应,那么我看不出有任何改进。

    这段代码是您编写的还是缓存插件的一部分?我自己编写这段代码是为了保存Wordpress使用
    update\u post\u meta()
    进行的有价值的sql调用。现在,我保存了17个sql调用,每个页面浏览超过300ms。我执行的第一个sql调用是确保ajax发送的postid指向有效的post。id隐藏在base64字符串中,经过解码,然后设置为$post_id。非常感谢!是的,我想我可以跳过第一个调用,我记得我非常高兴,从19个使用Wordpress内部ajax函数的调用,到只有2个,我保留它只是为了安全。是的,我确实在所有帖子上设置了一个views元键值,在它被改变之前:)Edit#3忘了提到我使用响应来改变页面上的一个views计数器。
    INSERT INTO wp_postmeta (meta_value, meta_key, post_id) VALUES (...)
    ON DUPLICATE KEY UPDATE meta_value=meta_value+1