【问题标题】:(12)Cannot allocate memory: couldn't create child process: /opt/suphp/sbin/suphp(12)无法分配内存:无法创建子进程:/opt/suphp/sbin/suphp
【发布时间】:2011-12-12 09:40:02
【问题描述】:

背景:

我有一个由 MYSQL 驱动的自定义 CMS 网站。连接到数据库以加载网页内容的 php 脚本。

加载的每个页面都使用相同的脚本连接到数据库。

这也包括 php、js、css 文件

连接db的脚本如下:

$my_link=mysql_connect("localhost",$dbusername,$dbpassword);

@mysql_select_db($database) or databaserror();

其中一个页面有以下内容

<link href="/administrator/files/master.css" rel="stylesheet" type="text/css" />
<link rel="stylesheet" type="text/css" href="/administrator/files/cbdb-btn.css" />
<link rel="stylesheet" type="text/css" href="/administrator/files/BreadCrumb.css"  />
<link rel="stylesheet" type="text/css" href="/administrator/files/prettyPhoto.css"  />
<link rel="stylesheet" type="text/css" href="/administrator/files/tabs.css" />

<script src="/administrator/files/jquery-1.6.2.min.js"></script>
<script type="text/javascript" src="/administrator/files/context_menu.js"></script>
<script type="text/javascript" src="/administrator/files/jquery.spinner.js"></script>
<script type="text/javascript" src="/administrator/files/jquery.jBreadCrumb.js"></script>
<script type="text/javascript" src="/administrator/files/jquery_upload.js"></script>
<script type="text/javascript" src="/administrator/files/prettyPhoto.js"></script>
<script type="text/javascript" src="/admin/ckeditor/ckeditor.js"></script>
<script type="text/javascript" src="/admin/ckeditor/adapters/jquery.js"></script>

所有以/administrator/files/开头的文件,包括上面信息的文件都是mysql驱动的。

以上文件有一个建立mysql db

$my_link=mysql_connect("localhost",$dbusername,$dbpassword);

然后在加载样式表时

<link href="/administrator/files/master.css" rel="stylesheet" type="text/css" />

它再次使用连接到数据库

$my_link=mysql_connect("localhost",$dbusername,$dbpassword);

它对所有 .css 和 .js 文件重复。

并非每次页面刷新都会发生这种情况,但是我在 5 次页面加载中出现 1 次收到错误消息

(12)Cannot allocate memory: couldn't create child process: /opt/suphp/sbin/suphp

我是否错误地连接到 MySQL?

如果我不包含mysql驱动的样式表或js文件没有问题,或者如果我自己加载样式表页面,没有问题。

内存设置为500mb,

当单独加载mysql驱动页面时,内存接近0mb,当加载超过1个mysql驱动页面时,内存会飙升到最大值

如果您需要更多信息,请告诉我。

谢谢

【问题讨论】:

  • 您好,您只需要连接一次 mysql 数据库,之后您可以根据需要向数据库发送尽可能多的查询,但是对于每个选择查询,您不需要连接到数据库它可能会减慢服务器速度,还需要更多内存,服务器将不稳定

标签: php mysql apache


【解决方案1】:

正如我在评论中已经说过的那样,您正在为每个query 连接mysql database,因为这可能会减慢服务器使用更多内存的速度,因此连接mysql db 一次并发送您需要的尽可能多的查询或者您可以使用下面的代码尝试increasing memory limit

ini_set('memory_limit','200M');

20M 表示它的20 Megabytes。 将上述代码插入到您想要的 php 脚本中...

【讨论】:

    猜你喜欢
    • 2013-10-30
    • 2015-12-16
    • 1970-01-01
    • 2017-06-15
    • 1970-01-01
    • 2015-05-04
    • 1970-01-01
    • 1970-01-01
    • 2015-04-27
    相关资源
    最近更新 更多