php pdo 时间,php – 使用PDO执行时间记录查询 – 自动完成功能无效

我正在尝试创建一个中间类,它将在数组中记录查询及其执行时间.一切都很好,它完美无缺.但是当我尝试访问中间类时,自动完成功能不起作用.如何让自动完成工作.我正在使用Netbeans.

中级类名是Model.

从我的应用程序中,我有一个名为Users的类,它扩展了Model.

class Users extends Model

{

function __construct() {

parent::__construct();

$stmt = $this->prepare('SELECT * FROM users WHERE id=? ');

$stmt->bindValue(1, 1); //$stmt-> auto-complete is unavailable

$stmt->execute();

$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);

print_r($rows); //i get results

}

}

我的Model类看起来像这样.

class Model extends PDO

{

public static $log = array();

private $query_cache = array();

public function __construct() {

parent::__construct(

"mysql:dbname=".MYSQL_DB.";host=".MYSQL_HOST,

MYSQL_USER, MYSQL_PASSWORD

);

}

public function query($query) {

$time = "";

$query = mysql_real_escape_string(preg_replace( '/\s+/', ' ', $query ));

if (key_exists($query,$this->query_cache)

&& is_object($this->query_cache[$query]))

{

$result = $this->query_cache[$query];

} else {

$start = microtime(true);

$result = parent::query($query);

$time = microtime(true) - $start;

$this->query_cache[$query] = $result;

Logger::$logText['DATABASE'][] = array(

'QUERY' => $query,

'TIME' => number_format($time,4)

);

}

return $result;

}

/**

* @return LoggedPDOStatement

*/

public function prepare($query) {

return new LoggedPDOStatement(parent::prepare($query));

}

}

我的LoggedPDOStatement看起来像这样.

class LoggedPDOStatement

{

/**

* The PDOStatement we decorate

*/

private $statement;

public function __construct(PDOStatement $statement) {

$this->statement = $statement;

}

/**

* When execute is called record the time it takes and

* then log the query

* @return PDO result set

*/

public function execute() {

$start = microtime(true);

$result = $this->statement->execute();

$time = microtime(true) - $start;

Model::$log[] = array(

'query' => '[PS] ' . $this->statement->queryString,

'time' => round($time * 1000, 3)

);

return $result;

}

/**

* Other than execute pass all other calls to the PDOStatement object

* @param string $function_name

* @param array $parameters arguments

*/

public function __call($function_name, $parameters) {

return call_user_func_array(

array($this->statement, $function_name), $parameters

);

}

}

他们有更好的方法吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值