2017-02-17 23 views
0

我有一個IOS應用程序,它將調用apche2服務器上的php文件並將查詢發送到mysql服務器(所有這些都在我的Mac OS X本地運行) 。如果我在打開應用程序後立即提交數據,那麼一切都很順利。我可以插入一個新的日誌到MySQL服務器。但是,如果我保持我的應用程序開放15-60分鐘(隨機),我的應用程序仍然工作正常,但MySQL不會響應PHP了。應用程序運行一段時間後,Php無法連接到mysql

這裏是我的目標C代碼的一部分我的應用程序(我不認爲這裏有任何問題)

NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://%@/database.php", httpPath]]; 
NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:url]; 

NSDictionary *params = @{@"jwt": user.jwt, @"mysqlCommand" : mysqlCommand}; 
[urlRequest setHTTPMethod:@"POST"]; 
NSError *error; 

[urlRequest setHTTPBody:[NSJSONSerialization dataWithJSONObject:params options:kNilOptions error:&error]]; 

這裏是一個執行查詢的PHP代碼部分

$conn=new PDO('mysql:host=localhost;dbname=something_db',$reader->db_username,$reader->db_password,array(
     PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION, 
)); 
$stmt=$conn->prepare($sqlStr); 
$stmt->execute($params); 

我已經注意到從我的apache錯誤日誌爲php服務器,php文件確實被稱爲因爲每當這個database.php被調用時會出現這樣的錯誤(稍後將試圖解決這個問題)

[週五11年2月17日:13:31.349827 2017] [:錯誤] [PID 21764] [客戶端 172.16.4.186:52869] PHP堆棧跟蹤:[星期五11年2月17日:13:31.349856 2017] [ :錯誤] [PID 21764] [客戶端172.16.4.186:52869] PHP 1 {主}() /Library/WebServer/Documents/mobile/database.php:0

然而MySQL一般日誌內, 在此期間沒有建立連接。 在哪裏如果我打開後立即運行程序,就會出現類似這樣的情況。

時間戳,線程,命令類型,詳細 2017年2月17日10:23:10.183493,237,查詢,INSERT INTO日誌(USER_ID,類別,操作,應用程序)VALUES( 'ABC','登錄」,‘登錄進食堂’,‘CAFE’)

我還沒有一個系統之前,PHP的學習,所以我不熟悉它的任何的設置,在所有所以我認爲這將是安全的你假設我只是在mac OS X上爲我的php服務器使用默認設置。

我在想現在,如果是由於會話問題,用於php服務器上的GC系統。任何人都有任何線索我的PHP服務器出了什麼問題,所以它不會發送查詢它想要做什麼?

+0

這是創建每次執行的連接的代碼?您可能想要打開一個連接並重新使用它;如果它爲每個查詢創建新的,你最終會達到服務器連接限制(特別是如果它們沒有正確處理) –

+0

是的。實際上每次都會調用整個database.php文件。但是每當sql響應時它都會被殺死。這可能是一個問題嗎? – n4feng

回答

0

(因爲我不能與代表低於50發表評論,我會寫我的回答猜測。)

如果您正在使用defaultly配置PHP CGI和Web服務器將請求轉發到該PHP-CGI,它很可能是在500次請求後死亡(以防止RAM溢出等) - 您將需要某種形式的FPM,以保持您的PHP-CGI活着。 (對於我的WIN,用無限循環批處理作業,直到外部打死行之有效......緊接着PHP,CGI去世,批作業繼續並再次啓動它。)

而且這應該是值得一試: https://stackoverflow.com/a/13020563/7581087

+0

謝謝你的回答。我會嘗試如果它工作 – n4feng

相關問題