我有一个IOS应用程序,它将调用apche2服务器上的php文件并将查询发送到mysql服务器(所有这些都在我的mac OS X上本地运行)。如果我在打开应用程序后立即提交数据,那么一切都会好起来的。我可以将新日志插入mysql服务器。但是,如果我保持我的应用程序打开15-60分钟(随机),我的应用程序仍然正常工作,但是mysql将不再响应php。
以下是我的应用程序的客观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时都会出现这样的问题(将尝试解决)这个稍后)
[2月17日星期五11:13:31.349827 2017] [:错误] [pid 21764] [客户 172.16.4.186:52869] PHP堆栈跟踪:[Fri Feb 17 11:13:31.349856 2017] [:error] [pid 21764] [client 172.16.4.186:52869] PHP 1. {main}() /Library/WebServer/Documents/mobile/database.php:0
但是在mysql常规日志中,在那个时间段没有建立连接。 如果我在程序打开后立即运行该程序,就会显示出类似的内容。
时间戳,线程,命令类型,详细信息 2017-02-17 10:23:10.183493,237,Query,INSERT INTO log(user_id,category,action,app)VALUES('abc','Login','Logged into cafeteria','CAFE')
我以前没有对php进行过系统的研究,因此我对它的任何设置都不熟悉所以我认为你可以安全地假设我只是在我的php服务器上使用默认设置mac OS X。
我现在正在考虑是因为会话问题,还是与php服务器上的GC系统有关的问题。任何人都有任何关于我的PHP服务器出了什么问题的线索,所以它没有发送它想要做的查询?
答案 0 :(得分:0)
(因为我无法在50以下的代表中发表评论,所以我会在答案中写下我的猜测。)
如果您使用默认配置的php cgi和webserver转发请求到php-cgi,很可能在500次请求后死亡(以防止RAM溢出等...) - 您将需要某种形式的 FPM ,以保持您的PHP-CGI活着。 (对于我在WIN上,无限循环的批处理作业直到外部杀死运行良好...在PHP-CGI死后,批处理作业继续并再次启动它。)