Я обнаружил переполнение стека и много вопросов в Google, где спросить об этом, я не мог найти решение …
Это мой код:
<?php
$db_host = "localhost";
$db_db = "";
$db_user = "";
$db_pass = "";
mysql_connect($db_host,$db_user,$db_pass);
mysql_select_db($db_db);
if($_POST['message']){
if($_POST['city'] == "ALL"){
$query = mysql_query("SELECT * FROM user_details WHERE devicetoken != ''");
$resultMessage = "Notifications sent to all users!";
} else {
$query = mysql_query("SELECT * FROM user_details WHERE city = '".$_POST['city']."' AND devicetoken != ''");
$resultMessage = "Notifications sent to users in ".$_POST['city']."!";
}
$deviceToken = ARRAY();
while ($row = mysql_fetch_array($query)) {
$deviceToken[] = $row["devicetoken"];
}$message = stripslashes($_POST['message']);// Create the payload body
$body['aps'] = array(
'alert' => $message,
'badge' => 1,
'sound' => 'default'
);
// Encode the payload as JSON
$payload = json_encode($body);$ssl='ck.pem';$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', $ssl);
stream_context_set_option($ctx, 'ssl', 'passphrase', '');
$fp = stream_socket_client('ssl://gateway.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
if(!$fp){
print "Failed to connect $err $errstrn";
return;
} else {
print $resultMessage;
}$apple_expiry = time() + (90 * 24 * 60 * 60);
$devArray = array();
$devArray[] = $deviceToken;
foreach($deviceToken as $token){
// Build the binary notification
$token = str_replace('(', '', $token);
$token = str_replace(')', '', $token);
$token = str_replace('Optional', '', $token);
$msg.= chr(0) . pack('n', 32) . pack('H*',trim($token)) . pack("N', $apple_expiry) . pack('n', strlen($payload)) . $payload;
print "<br>Message sent to token ";
print $token;fwrite($fp, $msg, strlen($msg));
}
fclose($fp);
} else {
echo "<form action='' method='post'>";
echo "<input type='text' name='message' maxlength='100'>";
echo "<select name='city'>";
echo "<option value='ALL'>ALL</option>";
$query = mysql_query("SELECT * FROM city");
while ($row = mysql_fetch_array($query)) {
echo "<option value='".$row['city_name']."'>".$row['city_name']."</option>";
}
echo "</select>";
echo "<input type='submit' value='Send Notification'>";
echo "</form>";
}
?>
это дает мне каждый раз, когда эта ошибка:
Предупреждение: fwrite (): сбой операции SSL с кодом 1. Сообщения об ошибках OpenSSL: ошибка: 1409F07F: подпрограммы SSL: SSL3_WRITE_PENDING: неудачная попытка записи
Задача ещё не решена.
Других решений пока нет …