好的,我想创建一个与WEB服务通信的iPhone应用程序。但有两点我不清楚。
当用户按下应用程序中的按钮时,它会通知Web服务该操作,Web服务会将推送通知发送给相应的用户。既然没有。通知必须发送到的用户可能很大,我正在考虑向iPhone应用程序发送响应(确定/错误),然后继续发送通知。换句话说,PHP脚本应该接受请求,响应它并在响应之后继续发送通知,以便iPhone应用程序不必等待服务。
该服务需要向许多用户发送推送通知。我正在用PHP编写Web服务。那么有更有效的替代PHP吗?或者它是实施服务的最佳方式?
感谢。
答案 0 :(得分:2)
对于#1,你可以做这样的事情......
在您的手机应用中使用以下方法:
- (void) send_to_server {
NSString *urlString = [NSString stringWithFormat:@"http://weburl.com/?variable=%@", variable];
NSURLRequest *theRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:urlString] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self];
if (theConnection) {
receivedData = [NSMutableData data];
if ([[NSString stringWithFormat:@"%@", receivedData] isEqualToString:@"Success"]){
//Do something here
}else{
//Do something else here
}
}
}
在PHP中,您可以执行以下操作:
<?php
$variable = $_GET['variable'];
//do what you need to do here...
//Put things into queue or what-not
if ($success){
echo "Success";
}else{
echo "Failure";
}
?>
<强>更新强>
<?php
if (isset($_GET['variable']){
echo "Success";
$variable = $_GET['variable'];
//do what you need to do here...
}else{
echo "Failure";
}
?>
至于向其他手机发送推送通知,我不知道该怎么做。但我认为PHP对效率没有任何问题。
答案 1 :(得分:1)
我假设关键问题是您要立即响应用户,然后执行其他工作,例如异步发送通知。
我建议使用某种队列系统,比如Gearman(虽然有很多替代品,比如Rabbit)。您可以让您的界面将作业放入Gearman队列,然后编写Gearman Worker以从队列中获取通知任务
您可以在PHP中执行此类工作,但如果您这样做,则可能需要使用Gearman Manager PHP库,因为PHP不是长时间运行的进程的最佳语言。 Gearman Manager为您启动和停止脚本,并使用PHP编写工作人员变得更加容易。
http://gearman.org/?id=gearman_php_extension https://github.com/brianlmoon/GearmanManager
答案 2 :(得分:1)
听起来很聪明。发送响应并继续处理同一线程中的通知,或者排队作业以在服务器上执行通知。
有很多人在讨论执行网络服务的不同语言的优点。如果您对PHP最熟悉且性能要求不高,那可能是您的最佳选择。