在PDO中,可以使用该PDO::ATTR_PERSISTENT属性使连接持久化.根据php手册 -
持久连接不会在脚本末尾关闭,而是在另一个脚本使用相同凭据请求连接时进行高速缓存和重新使用.持久连接缓存允许您避免每次脚本需要与数据库通信时建立新连接的开销,从而产生更快的Web应用程序.
本手册还建议在使用PDO ODBC驱动程序时不要使用持久连接,因为它可能会妨碍ODBC连接池过程.
显然,除了在最后一种情况下,在PDO中使用持久连接似乎没有任何缺点.但是,我想知道使用这种机制是否存在任何其他缺点,即这种机制会导致性能下降或类似的情况.
我有一个脚本,每晚做很多腿部工作.
它使用在循环中执行的PDO预处理语句.
前几个运行正常,但随后我发现它们都失败并出现错误:"MySQL服务器已经消失".
我们运行MySQL 5.0.77.
PHP版本5.2.12
网站的其余部分运行良好.
如果我在laravel 4.2(数据库是mysql)中使用软删除,那么每个雄辩的构建查询都有WHERE deleted_at IS NULL.没有索引deleted_at.
那么,Laravel的"soft_delete"是否需要MySQL的索引?
今天我的一个网站开始展示
Error Number: 2006 MySQL server has gone away
它是在Apache 2.2.9(Debian),PHP 5.2.6-1 + lenny3(使用CodeIgniter 1.7.1框架)和MySQL 5.0.51a下运行的低流量客户端站点.我显然对这个错误进行了重新研究,但是所有可能的解决方案都意味着有大量的查询可能会超时并重置连接或达到数据包限制.但是,情况并非如此,它是使用最简单的查询处理的小型数据库.为了确保这一点,我编写了几个查询来返回一行,仍然是同样的错误.
数据库凭证很好,我甚至可以直接登录到mysql,运行一些网站的查询并立即获得正确的数据.在同一台服务器上有几个其他站点和数据库的连接,更大的站点,它们都没有问题.
我试过了:
mysql.connect_timeout和default_socket_timeoutPHPmax_allowed_packetMySQL新:
wait_timeout和connect_timeout在MySQL中更新:
它似乎与我的脚本的执行时间有关:它使用Facebook PHP客户端检索一些信息,这个调用似乎今天随机失败,所以我要么没有来自Facebook的数据或MySQL错误.但令我惊讶的是,没有一个给定的解决方案似乎处理超时.
有任何想法吗?感谢您的时间!
mysql ×3
php ×3
pdo ×2
codeigniter ×1
eloquent ×1
facebook ×1
indexing ×1
laravel ×1
optimization ×1