哪个清除数组中的所有值更有效?第一个要求我每次在第二个例子的循环中使用该函数.
foreach ($array as $i => $value) {
unset($array[$i]);
}
Run Code Online (Sandbox Code Playgroud)
或这个
foreach($blah_blah as $blah) {
$foo = array();
//do something
$foo = null;
}
Run Code Online (Sandbox Code Playgroud) 我最近发现之前运行正常的sql查询现在在60秒后超时并抛出错误.查询速度很慢,但作为夜间工作的一部分运行,因此本身并不是问题(所以请不要建议我对其进行优化).
我可以通过运行"select SLEEP(120);"来一致地重现错误.来自PHP,如下所示.但是,从MySQL客户端运行相同的语句是成功的(返回0).我已经尝试调整wait_timeout(设置为28800),但没有运气.我还重启了数据库服务器和机器本身.
事实上,它总是在60秒内超时,这表明它可能是一个环境而不是有限的资源问题.
我正在运行:
Windows Server 2003
MySql 5.1.36-community
PHP 5.3
下面是我的测试代码,输出和SHOW VARIABLES的结果
谢谢!
码:
set_error_handler("sqlErrorHandler");
set_time_limit(12000);
$link = mysql_connect("$MYSQL_Host","$MYSQL_User","$MYSQL_Pass");
mysql_select_db($MYSQL_db, $link);
echo "mysql_ping = " . (mysql_ping($link) ? "LIVE" : "DEAD") . "<br /><br />";
$sql = "SELECT SLEEP(120);";
$start = microtime(true);
mysql_query($sql, $link);
echo "**query done**<br />";
allDone();
function allDone(){
global $start, $sql;
$end = microtime(true);
echo "sql : $sql<br />";
echo "elapsed : " . ($end - $start) . "<br />";
echo "<br />";
}
function …Run Code Online (Sandbox Code Playgroud) 我的Laravel 5.7网站遇到了一些我认为彼此相关的问题(但在不同时间发生):
PDO::prepare(): MySQL server has gone awayE_WARNING: Error while sending STMT_PREPARE packet. PID=10PDOException: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry (我的数据库似乎经常尝试在同一秒内写两次相同的记录.我一直无法弄清楚为什么或如何重现它;它似乎与用户行为无关.)几个月来,我一直看到这些可怕的日志消息,而且我完全无法重现这些错误(并且无法诊断和解决它们).
我还没有发现任何实际症状或听到用户的任何抱怨,但错误消息似乎并非易事,所以我真的想了解并解决根本原因.
我已经尝试更改我的MySQL配置使用max_allowed_packet=300M(而不是默认的4M)但在我有超过几个访问者访问我的网站的日子里仍然经常得到这些例外.
由于这个建议,我还设置了(从5M和10M改为)以下内容:
innodb_buffer_pool_chunk_size=218M
innodb_buffer_pool_size = 218M
Run Code Online (Sandbox Code Playgroud)
作为进一步背景:
artisan queue:work --sleep=3 --tries=3 --daemon)的队列工作者. mysqlslap查询(虽然我完全是新手)并且即使在模拟数百个并发客户端时也没有发现任何缓慢的问题.SHOW VARIABLES;和SHOW GLOBAL STATUS; 在这里.我my.cnf是:
[mysql]
[mysqld]
sql-mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"
character-set-server=utf8
innodb_buffer_pool_chunk_size=218M
innodb_buffer_pool_size …Run Code Online (Sandbox Code Playgroud) 我希望这里有人可以帮助解决我在网络服务器上遇到的问题.目前,服务器托管我们为帮助台购买的Web应用程序.每当有人导航到该页面时,每隔8小时就会出现以下错误:
[Warning]: PDO::__construct(): MySQL server has gone away (Database/class.SWIFT_Database.php:334)
Run Code Online (Sandbox Code Playgroud)
我已经尝试将wait_timeout设置为/etc/my.cnf文件中的最大值,即;
wait_timeout=31536000
Run Code Online (Sandbox Code Playgroud)
同样从mysql我将全局wait_timeout设置为此值并将session wait_time设置为相同.
我注意到一些奇怪的行为,当你重新启动mysql服务时,等待超时重置为28800默认值,尽管它在my.cnf中设置.我找不到mysql的任何其他配置文件,但很高兴看到有人能指出我的方向.
今天早上当我登录服务器并运行以下命令时,会话wait_timeout值已恢复!
mysql> select @@global.wait_timeout, @@session.wait_timeout;
+-----------------------+------------------------+
| @@global.wait_timeout | @@session.wait_timeout |
+-----------------------+------------------------+
| 31536000 | 28800 |
+-----------------------+------------------------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
我看到这对很多人来说都是一个问题,在mysql上运行各种各样的webapps,但似乎没有人有修复.网上有很多建议指向wait_timeout,但它似乎没有改变我所看到的错误.我已经尝试了关于这个问题的mysql手册的修复,但仍然没有运气(链接:http://dev.mysql.com/doc/refman/5.0/en/gone-away.html)
任何建议将不胜感激.服务器详情和产品版本如下:
服务器:OpenSuse 11.4 MySql版本:5.1.53
提前谢谢了!