PHP連線mysql後pcntl_fork產生的錯誤
最近使用PHP做多程序上傳碰到了一個問題,上傳完成以後寫入資料庫時報錯:Packets out of order. Expected 1 received 0. Packet size=4131940
也有可能是:MySQL server has gone away
總之可能是這種各樣奇怪的錯誤
思考了一下,考慮到PDO是在主程序中建立的,因此fork後多個子程序使用的是同一個PDO連線,如果有兩個子程序同時使用該連線與資料庫通訊,那麼就可能因為通訊協議時序的不正確導致mysql出現異常
為了驗證該想法,寫了一個測試程式抓包看了一下
$dsn = "mysql:host={$host};dbname={$dbName};port={$port};charset=utf8"; $dbh = new PDO($dsn, $user, $pswd); for ($i=0; $i < 2; $i++) { $pid = pcntl_fork(); if ($pid == -1) { throw new \Exception("Fork process error!", 1); } if ($pid == 0) { // child $sth = $dbh->query("select * from test_table"); exit(0); } }
從抓包結果可以看到兩個子程序確實是使用的同一個tcp連結,其中61是客戶機,178是服務機
知道了原因,解決起來就好辦了,不要使用主程序中建立的mysql連線,進入子程序了以後再重新建立新的mysql連線就不會出現這種問題了
參考連結:https://bugs.php.net/bug.php?id=67061
相關推薦
PHP連線mysql後pcntl_fork產生的錯誤
最近使用PHP做多程序上傳碰到了一個問題,上傳完成以後寫入資料庫時報錯:Packets out of order. Expected 1 received 0. Packet size=4131940 也有可能是:MySQL server has gone away 總之可
php連線MySQL時產生錯誤:mysqlnd cannot connect to MySQL 4.1+ using old authentication
1.本人開發PHP使用的是appserv-win32-2.6.0.exe,其中PHP版本是6.0.0-dev,MySQL版本是 6.0.4-alpha-community-log。在使用PHP連線資料庫是產生了如下錯誤: Warning: mysql_connect() [
PHP 連線mysql資料庫
報錯: Warning: mysqli::mysqli(): (HY000/2002): No such file or directory <span style="font-size:18px;">cd /var sudo mkdir m
PHP連線MySql閃斷自動重連的方法
使用php作為後臺執行程式(例如簡訊群發),在cli模式下執行php,php需要連線mysql迴圈執行資料庫處理。 當mysql連線閃斷時,之後迴圈的執行將會失敗。 我們需要設計一個方法,當mysql閃斷時,可以自動重新連線,使後面的程式可以正常執行下去。 1.建立測試資料表 CREATE&nbs
php連線mysql報錯mysql_connect(): Access denied for user 'root'@'localhost' (using password: YES)
mysql_connect(): Access denied for user ‘root’@‘localhost’ (using password: YES) 1、連線密碼輸錯,檢查程式碼 2、wamp中因root密碼修改,而導致 路徑:****\phpmyadmin4.1.14 檔案
php連線mysql時報錯The mysql extension is deprecated and will be removed in the future
首先 可以成功連線,但是會報錯, The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead。。。 如下: 意思很明顯了啊,mysql_connect在將來的
jdbc連線mysql資料庫報時區錯誤和SSL連線錯誤
錯誤1:時區錯誤 報錯資訊: com.mysql.cj.core.exceptions.InvalidConnectionAttributeException: The server time zone value '?й???????' is unrecognized or represe
jdbc連線mysql時報時區設定錯誤解決方法
參考https://blog.csdn.net/zqb765720343/article/details/80076020,感謝分享。 jdbc連線mysql時報時區設定錯誤,提示相差8小時。 1、在mysql命令列模式下修改時區,經過嘗試發現,這種方法重啟mysql後就失效了,不是永久的。
PHP連線Mysql常用API(mysql,mysqli,pdo)區別與聯絡
什麼是API? 一個應用程式介面(Application Programming Interface的縮寫),定義了類,方法,函式,變數等等一切 你的應用程式中為了完成特定任務而需要呼叫的內容。在PHP應用程式需要和資料庫進行互動的時候所需要的API 通常是通過PHP擴充套件暴露出來(給終端PH
php連線mysql程式碼
php連線mysql示例 解決方法: /** * @param string $con_db_host 主機地址 * @param s
php連線mysql的三種方式
1:使用面向過程: // 設定資料庫引數 define('DB_USER','blog'); define('DB_PASSWORD','lmm13637064637'); define('DB_HO
php連線mysql報錯mysql_connect(): Access denied for user 'root'@'localhost' (using password: YES)
mysql_connect(): Access denied for user ‘root’@‘localhost’ (using password: YES) 1、連線密碼輸錯,檢查程式碼 2、wam
遠端連線MYSQL資料庫出現10061錯誤問題
問題: 第一次安裝好mysq,正常啟動沒有問題。但是等電腦關機後,再次打開發現出問題了,顯示“Can not connect to MySQL server on ‘localhost’(10061)”。 出現這個問題很大一部分因為你的MySQL沒有啟動。 解決辦法:
mac系統-PHP連線mysql資料報錯 No such file or directory解決方案
結合網路上提供的解決方案提供在mac下的詳細解決方案 1.找到/private/etc/php.ini檔案,並開啟並檢視檔案 ..... pdo_mysql.default_socket= ..... mysqli.default_socket = ..... 你會看到
PHP連線MySQL相關操作
PHP 5 及以上版本建議使用以下方式連線 MySQL : MySQLi PDO (PHP Data Objects) 我個人更偏好使用MySQLi,所以以MySQLi為例連線操作MySQL 而MySQLi又分為面向物件和麵向過程兩種方法,推薦使用面向物件。 下
PHP連線MySQL的增刪改查
<?php header("content-type:text/html;charset=utf-8"); //新增連線資料庫表 //連線資料庫 $link=mysql_connect('localhost','root','root');
啟動mysql後出現1067錯誤
成功安裝好mysql後出現:“發生系統錯誤 1067”最後的解決辦法是重安裝,記得在安裝目錄下下my.ini檔案,其內容如下 [client]default-character-set=gb2312 [mysqld]basedir=d:/mysqldatadir=d:/my
PHP連線mysql資料庫之根據配置檔案選擇mysqli還是pdo方式
配置檔案config.php <?php return array( 'DB' => array( 'default_extension' => 'mysqli', ),
CentOS下httpd下php 連線mysql 本機可以,127.0.0.1不能訪問
你看到的這個文章來自於http://www.cnblogs.com/ayanmw php程式碼很簡單: $server="127.0.0.1"; println("Begin"); $link = mysql_connect($server,"mysql","mysql"); if (!$l
[WAMP網站開發] PHP連線MySQL資料庫基礎知識
這篇文章主要是最近教學生使用WAMP(Windows+Apache+MySQL+PHP)開發網站,HTML佈局首頁,PHP連線資料庫以及XAMPP操作資料庫的基礎文章,更是一篇教學文章。文章比較基礎,希望對能給PHP網站開發的學生做個入門介紹。一. HTML簡單佈局首頁首先是