- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试调试为什么我的 PHP 使用如此多的 CPU。
像这样运行 strace 后:
strace -e open,close php /scripName.php
它向我显示了它使用的所有文件,当我认为它到达了使用 MySql 连接的代码部分时,它会返回以下内容:
open("/etc/host.conf", O_RDONLY|O_CLOEXEC) = 3
close(3) = 0
open("/etc/resolv.conf", O_RDONLY|O_CLOEXEC) = 3
close(3) = 0
open("/etc/hosts", O_RDONLY|O_CLOEXEC) = 3
close(3) = 0
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
close(3) = 0
open("/lib/i386-linux-gnu/libnss_dns.so.2", O_RDONLY|O_CLOEXEC) = 3
close(3) = 0
open("/etc/resolv.conf", O_RDONLY|O_CLOEXEC) = 3
close(3) = 0
close(3) = 0
open("/usr/share/mysql/charsets/Index.xml", O_RDONLY|O_LARGEFILE) = 4
close(4) = 0
close(3) = 0
open("/etc/hosts", O_RDONLY|O_CLOEXEC) = 3
close(3) = 0
close(3) = 0
close(3) = 0
open("/etc/hosts", O_RDONLY|O_CLOEXEC) = 3
close(3) = 0
close(3) = 0
close(3) = 0
open("/etc/hosts", O_RDONLY|O_CLOEXEC) = 3
close(3) = 0
close(3) = 0
close(3) = 0
open("/etc/hosts", O_RDONLY|O_CLOEXEC) = 3
close(3) = 0
close(3) = 0
close(3) = 0
还有很多更多
open("/etc/hosts", O_RDONLY|O_CLOEXEC) = 3
close(3) = 0
close(3) = 0
close(3) = 0
实际上,每一个都花费了相当多的时间。
我尝试通过注释行来查明问题,直到这种情况不再发生,并且我到达了此类:
<?php
include_once 'config.php';
class db extends PDO {
public $dbtipo = DBTIPO;
public $host = DBHOST;
public $user = DBUSER;
public $pass= DBPASS;
public $db = DBNAME;
function __construct(){
$dns = $this->dbtipo.':host='.$this->host.";dbname=".$this->db;
parent::__construct( $dns, $this->user, $this->pass ,
array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
}
}
?>
如果我评论这一行:
parent::__construct( $dns, $this->user, $this->pass ,
array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
这样就不会再发生了。
仅供引用,此类在另一个类中使用,如下所示:
public function getDataFromDb(){
$connection = new db();
$query = $connection->prepare("SELECT * FROM table");
$query->execute();
return $query;
}
常量在 config.php 文件中定义如下:
define('DBTIPO', 'mysql');
define('DBHOST', 'mysite.com');
define('DBUSER', 'user');
define('DBPASS', 'password');
define('DBNAME', 'database_name');
有什么想法吗?
最佳答案
主机需要将 mysite.com
解析为 IP 地址,因此它会在 /etc/hosts
中查找,可能找不到它,然后检查/etc/resolv.conf
用于用于解析的名称服务器,然后可能向这些名称服务器之一发出 DNS 查询。
取决于所需的操作,但如果 MySQL 服务器位于同一主机上,则使用 localhost
。如果没有,则可以将其添加到 hosts
文件中。
不确定这与 CPU 利用率有何关系,但回答了 hosts
和 resolv.conf
问题。
关于php - strace 为 php 文件返回大量打开的 ("/etc/hosts"、 O_RDONLY|O_CLOEXEC),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21317992/
我正在处理文件状态标志。 在我进行的测试中,我发现 #include #include "fcntl.h" int main() { const int flag = O_RDONLY;
我正在根据我在某些元文件中设置的权限检查发送到 open(2) 调用的标志。这里的 perms 与通常发送给 chmod 等调用的八进制值有关。我希望在 perms 与相关标志不匹配时输入 if bl
在我的简单程序中: #include #include #include #include using namespace std; int main(int argc, char *argv
使用函数 Open() 或 OpenFile(path, os.O_RDONLY) 后我可以读取文件,但之后无法删除文件。所以我尝试使用写标志 os.RDWR 打开文件,如下面的代码,看看我是否可以删
我目前正在从以下网站学习现代 OpenGl:http://www.arcsynthesis.org/gltut/Building%20the%20Tutorials.html . 不幸的是,当我按照说
是否可以从 nodejs 访问操作系统常量 O_RDONLY、O_WRONLY、O_APPEND 等的值? 我知道它们在所有平台上都不一样,所以正确的方法是使用常量而不是依赖我当前系统中的硬编码值。
我正面临标题所说的确切问题。 代码 pid_t childpid; int childfdRead, childfdWrite; // file descriptors for childs int
我想在我的程序中读取异步磁盘。 服务器上有很多硬盘,如果一个硬盘慢,程序就会阻塞。我想进行异步调用。 如果我调用: 打开(路径,O_NONBLOCK | O_RDONLY | O_DIRECT) 然后
我正在尝试调试为什么我的 PHP 使用如此多的 CPU。 像这样运行 strace 后: strace -e open,close php /scripName.php 它向我显示了它使用的所有文件,
我是一名优秀的程序员,十分优秀!