在我发布的上一个问题中,我提到我们会在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命令吗?
由于