如何监控Opencart结帐时的虚拟内存使用情况

时间:2014-07-24 09:24:47

标签: php ajax memory memory-management opencart

在我发布的上一个问题中,我提到我们会在Opencart结帐时随机收到500 Internal Server Error个提醒。这似乎发生在对后端.php / .tpl文件的AJAX调用上。临时解决方案是在错误警报触发时重新处理ajax。目前,解决方案正在运行,因为我们尚未获得500 Internal Server Error警报。

我正在努力深入研究这个问题。希望我能提出更好的解决方案。

我唯一的领导是cpanel日志。在资源监视器上,虚拟内存似乎在错误生成时达到其限制。在错误日志中,这也是如下:

  

'(12)无法分配内存:无法创建子进程:/ opt / suphp / sbin / suphp ... '

我的假设是在结账时会在页面的某个地方出现内存问题。

我在数据库上创建了一个表日志,并编写了一个模型(PHP),用于在每次调用时检查内存使用情况:

class ModelToolMem extends Model {
    public function memory_usage_logs($page_route, $page_process){
       $peak = memory_get_peak_usage();
       $peak_kb = $peak/1024;
       $peak_mb = $peak_kb/1024;
       $peak_mb = number_format($peak_mb, 2, '.', ',');
       $peak_details = "peak memory usage = $peak_mb MB";
       $sql = "INSERT INTO table_memory_log (page, process, details, date_time) VALUES ('$page_route', '$page_process', '$peak_details', NOW())";
       $this->db->query($sql);
    }
}

模型通过每个被调用页面上的脚本调用。示例脚本如下:

$this->load->model('tool/res_mon');
$this->model_tool_mem->memory_usage_logs('quickcheckout/some_page', 'some_page.php > validate');

在进行测试检查时,分配给正在运行的脚本的内存将记录在数据库中。我在日志中观察到的最大内存是3.00 MB,这是正常的吗?

但是,当我完成测试运行并检查cpanel日志时,我看到有虚拟内存达到极限的情况,这出现在错误日志中:

  

'(12)无法分配内存......'

但是当我查看数据库中的日志时,我没有看到内存有任何异常增加。

执行PHP脚本时,监控虚拟内存使用情况的更好方法是什么?除memory_get_peak_usage()之外还有其他PHP命令吗?

由于

0 个答案:

没有答案