Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.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实例_Php_Cron_Silverstripe - Fatal编程技术网

服务器代码散播了太多的php实例

服务器代码散播了太多的php实例,php,cron,silverstripe,Php,Cron,Silverstripe,我有一台服务器,它的动作由频繁的cron作业触发。 这是一个基于Silverstripe(4.0)构建的php应用程序。 我面临的问题是php进程保持活动状态,同时保持数据库连接打开。这意味着几天后,一旦SQL停止接受新连接,站点将完全停止工作 系统有两个关于cron作业的任务 一个是获取一个巨大的CSV文件,并将其放入较小的子文件中,然后导入数据库。这一个使用一个锁文件来防止它运行到以前运行的实例中。我不太确定这是否有效 第二个任务处理大批量更新的所有记录 这两种情况都可能是过载的根源,但我不

我有一台服务器,它的动作由频繁的cron作业触发。
这是一个基于Silverstripe(4.0)构建的php应用程序。
我面临的问题是php进程保持活动状态,同时保持数据库连接打开。这意味着几天后,一旦SQL停止接受新连接,站点将完全停止工作

系统有两个关于cron作业的任务

一个是获取一个巨大的CSV文件,并将其放入较小的子文件中,然后导入数据库。这一个使用一个锁文件来防止它运行到以前运行的实例中。我不太确定这是否有效

第二个任务处理大批量更新的所有记录

这两种情况都可能是过载的根源,但我不确定如何缩小其范围。

诊断问题根源的最佳方法是什么?

就调试而言,这与使用and之类的命令分析应用程序的任何其他任务一样。为了确保进程不会运行太长时间,您可以限制
PHP.ini
CLI
的运行时间

然后让
CLI
进程运行很长时间,但时间刚好足够,请添加一些内容以设置每行的最大执行时间:

$allowed_seconds_per_row = 3;
foreach($rows_to_process as $row){
    set_time_limit($allowed_seconds_per_row);
    $this->process($row);
}
您还可以在脚本结束时记录状态


内存很可能是导致故障和调试的关键原因,调试的重点是,并且可以根据需要由变量数据控制。

就调试而言,这与使用and之类的命令分析应用程序的任何其他任务一样。为了确保进程不会运行太长时间,您可以限制
PHP.ini
CLI
的运行时间

然后让
CLI
进程运行很长时间,但时间刚好足够,请添加一些内容以设置每行的最大执行时间:

$allowed_seconds_per_row = 3;
foreach($rows_to_process as $row){
    set_time_limit($allowed_seconds_per_row);
    $this->process($row);
}
您还可以在脚本结束时记录状态


内存很可能是导致故障和调试的关键原因,主要集中在上,并且可以根据需要由可变数据控制。

通常,从CSV文件将多少记录插入数据库中?更新是否来自同一个CSV文件?CSV文件多久更新一次?源CSV文件可以大到750k条记录,但不经常更新。我试验过的批量大小是500和1000。生成CSV文件的任何东西都可以设置为生成更小的CSV文件吗?需要多久进行一次插入和更新?通常,从CSV文件将多少记录插入数据库?更新是否来自同一个CSV文件?CSV文件多久更新一次?源CSV文件可以大到750k条记录,但不经常更新。我试验过的批量大小是500和1000。生成CSV文件的任何东西都可以设置为生成更小的CSV文件吗?需要多久进行一次插入和更新?