0

先说好话 - 我的代码正在运行。但不幸的是,要推送到许多设备时速度非常慢。由于之前一个设备因我的代码而失败(连接是在循环外建立的)时整个推送过程都失败了,所以我在循环内建立了连接:

foreach ($deviceTokens as $token) {
  $fp = stream_socket_client($this->data['config']['push']['apnsAddress'], $err, $errstr, 60, STREAM_CLIENT_CONNECT | STREAM_CLIENT_PERSISTENT, $ctx);
  $msg = chr(0).pack('n', 32).pack('H*', $token).pack('n', strlen($payload)).$payload;
  $result = fwrite($fp, $msg);
  if (!$result) {
    $this->pushLog('devicetoken '.$token.' failed');
    $errors++;
  }
  fclose($fp);
}

除了为每个安装了应用程序的人建立新连接之外,没有其他方法可以推送到多个设备吗?这个脚本的运行时间目前很长。

4

1 回答 1

0

首先,我可以知道您要在循环中推送多少设备吗?对于合理数量的令牌,您拥有的代码应该可以正常工作。你的服务器到苹果的连接有多快?另一种方法是使用第三方推送 API。通常,它们提供扩展的参数和选项,其中肯定包括通过一次调用推送到多个设备。干杯。

于 2013-09-16T10:01:10.573 回答