相关疑难解决方法(0)

清除PHP数组值的最佳方法

哪个清除数组中的所有值更有效?第一个要求我每次在第二个例子的循环中使用该函数.

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)

php arrays

158
推荐指数
7
解决办法
34万
查看次数

MySQL服务器已经消失 - 正好在60秒内完成

我最近发现之前运行正常的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)

php mysql timeout

62
推荐指数
5
解决办法
13万
查看次数

E_WARNING:发送STMT_PREPARE数据包时出错.PID =*

截至2019-01-30 14:52 UTC,您仍然可以赢得500分Bounty,因为没有一个答案有帮助!

我的Laravel 5.7网站遇到了一些我认为彼此相关的问题(但在不同时间发生):

  1. PDO::prepare(): MySQL server has gone away
  2. E_WARNING: Error while sending STMT_PREPARE packet. PID=10
  3. PDOException: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry (我的数据库似乎经常尝试在同一秒内写两次相同的记录.我一直无法弄清楚为什么或如何重现它;它似乎与用户行为无关.)
  4. 不知何故,前两种类型的错误只出现在我的Rollbar日志中,而不是出现在服务器上或我的Slack通知中的文本日志中,因为所有错误应该是(和所有其他错误).

几个月来,我一直看到这些可怕的日志消息,而且我完全无法重现这些错误(并且无法诊断和解决它们).

我还没有发现任何实际症状或听到用户的任何抱怨,但错误消息似乎并非易事,所以我真的想了解并解决根本原因.


我已经尝试更改我的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)

作为进一步背景:

  • 我的站点有一个运行jobs(artisan queue:work --sleep=3 --tries=3 --daemon)的队列工作者.
  • 根据访问者的注册时间,可以在同一时间安排一系列排队的作业.但我发现同时发生的最多是20.
  • MySQL慢查询日志中没有条目.
  • 我有几个cron工作,但我怀疑他们是有问题的.一分钟运行,但非常简单.另一个是每隔5分钟运行一次,如果有任何待处理的电子邮件,则会发 另一个每30分钟运行一次报告.
  • 我已经运行了各种mysqlslap查询(虽然我完全是新手)并且即使在模拟数百个并发客户端时也没有发现任何缓慢的问题.
  • 我正在使用Laradock(Docker).
  • 我的服务器是DigitalOcean 1GB RAM,1个vCPU,25GB SSD.我也试过2GB内存没有区别.
  • 结果来自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)

mysql performance laravel laravel-5 laradock

12
推荐指数
2
解决办法
1383
查看次数

[警告]:PDO :: __ construct():MySQL服务器已经消失 - wait_timeout不是原因?

我希望这里有人可以帮助解决我在网络服务器上遇到的问题.目前,服务器托管我们为帮助台购买的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

提前谢谢了!

mysql pdo

3
推荐指数
1
解决办法
1万
查看次数

标签 统计

mysql ×3

php ×2

arrays ×1

laradock ×1

laravel ×1

laravel-5 ×1

pdo ×1

performance ×1

timeout ×1