Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.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 生产服务器上出现奇怪的超时错误(网络错误(tcp_错误))_Php_Server - Fatal编程技术网

Php 生产服务器上出现奇怪的超时错误(网络错误(tcp_错误))

Php 生产服务器上出现奇怪的超时错误(网络错误(tcp_错误)),php,server,Php,Server,我有一个为我的公司运行的应用程序,它使用非常慢的脚本。其中一个页面用于运行SQL查询大约5分钟,然后在大约20分钟内运行PHP 在此延迟之后,服务器向我发送一个错误,该错误表示: 网络错误(tcp\U错误) -503错误-发生通信错误:“” 我已经尝试通过增加PHP的最大执行时间来解决这个问题,但没有成功 如果你想访问代码,我可以给你,但代码并不容易理解 您知道如何修复此错误吗?我想问题在于计算量大,或者脚本处理了大量数据库数据,因此请尝试以下方法: 尝试对数据获取进行分页,尝试将数据提取到更小

我有一个为我的公司运行的应用程序,它使用非常慢的脚本。其中一个页面用于运行SQL查询大约5分钟,然后在大约20分钟内运行PHP

在此延迟之后,服务器向我发送一个错误,该错误表示:

网络错误(tcp\U错误) -503错误-发生通信错误:“”

我已经尝试通过增加PHP的最大执行时间来解决这个问题,但没有成功

如果你想访问代码,我可以给你,但代码并不容易理解


您知道如何修复此错误吗?

我想问题在于计算量大,或者脚本处理了大量数据库数据,因此请尝试以下方法:

  • 尝试对数据获取进行分页,尝试将数据提取到更小的块中
  • 当然,不可能尝试将计算隐藏并移动到其他位置:
    • 首先加载html,然后通过ajax加载数据
    • 尝试在数据库过程中处理数据(查询mysql,等等)
    • 使用异步通信创建服务,例如脚本与rabbit mq通信。处理服务上的数据并将其发送回主应用程序。对于php,您可能需要另一个支持WebSocket和node.js的应用程序
  • 尝试缓存不经常计算的数据。例如,在处理后获取某些数据时,将结果缓存在mongodb中,因此,如果不受影响,请首先从mongo获取数据,不要重新计算它们
  • 考虑预计算尽可能多的数据,并将它们存储在非关系数据库(mongodb、couchbase)的关系数据库(mysql postgresql)中
  • 此外,一些应用程序部件尝试使用关系数据库以外的其他技术,以提高效率(例如,用于搜索的弹性搜索或用于映射关系的neo4j)
  • 尝试将计算拆分为更小的块,并在写入和更新期间通过db触发器执行它们。另一种方法是,通过使用服务或写逻辑本身进行写操作,以较小的部分进行计算 同样在执行上述操作之前,请尝试分析代码在何处减慢处理数据所需的时间以及提取的数据量

    此外,在后台进程执行的情况下,您需要一些额外的数据和跟踪进程的方法。您还可以运行以下操作:

    <?php
    
      system("php someheavyprocessingscript.php &");
      //Load Html do some stuff here
    ?>
    
    
    
    通过系统和执行命令的结尾
    &
    ,您可以在后台运行进程。通常我更喜欢服务方法,通过一些WebSocket通过RabbitMq通信将结果获取到前端


    也考虑GoogLe/DukDoCo下面的关键词:<代码> XDebug Primule<代码>,<代码>面向服务的体系结构<代码>,它将给出一些关于如何解决它的要点+一些额外的知识。我的公司就是这样做的,这是一个没有任何稳健性的战略。你应该尝试在后台无头地计算这些东西,并且只使用一个监控解决方案来跟踪进度和成功。好的,谢谢,我将研究这些选项。基本上,代码是关于巨大数据集和许多参数的总和和平均值。有了这些信息,你知道从选项1到选项5理论上最好的做法是什么吗?没有什么是最好的选择,就是根据知识和资源来寻找最适合你的。通常你需要做的是:-将计算分成更小的块-在别处执行-尽可能少地执行它或以上所有/部分。请点击我答案中的向上箭头:p