Ich weiß, dass diese Frage mehrmals gestellt wurde, aber ich suche nach einer anderen Antwort auf mein Problem.PHP: 504 Gateway Timeout Fehler?
Grundsätzlich habe ich eine MYSQL-Datenbank mit über 10000 Datensätze von iPhone-Geräte-ID für Push-Benachrichtigungen darin.
Jetzt muss ich eine PHP-Datei ausführen, die eine Verbindung mit dem Apple APNS-Server herstellt, um Push-Benachrichtigungen an diese 10000 Datensätze in meiner MYSQL-Datenbank zu senden.
Wenn ich meine PHP-Seite laufen, nach einer gewissen Zeit erhalte ich einen Fehler timed out ...
in meiner Forschung, die ich über ein paar Lösungen kam aber die meisten erfordern ein paar Sachen in etc Ordner auf dem Server zu bearbeiten.
Meine Frage ist:
es irgendeine Art und Weise kann 30 Datensätze aus MYSQL-Datenbank auszuwählen sagt, dann stoppen und dann weitere 30 wählen und dann stoppen und dann 30 andere und so weiter und so fort, bis die, die aufzeichnet wurden die PNs gesendet?
Dies ist mein aktueller Code:
$message = "Welcome";
$sqld = "SELECT * FROM pushUsers ORDER BY id DESC";
$queryd = mysqli_query($db_conx, $sqld);
$productCountd = mysqli_num_rows($queryd); // count the output amount
if ($productCountd > 0) {
//while($rowd = mysqli_fetch_array($queryd, MYSQLI_ASSOC)){
while($rowd = mysqli_fetch_assoc($queryd)){
$deviceID = $rowd["deviceNo"];
$deviceType = $rowd["deviceType"];
if($deviceType == 'iPhone' || $deviceType == 'iPad'){
///////////////SEND PUSH NOTU8FOCATION FOR iOS//////////////////////
// Put your device token here (without spaces):
$deviceToken = ''. $deviceID.'';
// Put your private key's passphrase here:
$passphrase = '123456';
////////////////////////////////////////////////////////////////////////////////
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', 'apple_push_notification_production.pem');
stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);
// Open a connection to the APNS server
//****IMPORTANT**** LIVE APNS URL:
//ssl://gateway.sandbox.push.apple.com:2195
$fp = stream_socket_client(
'ssl://gateway.push.apple.com:2195', $err,
$errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
if (!$fp)
exit("Failed to connect: $err $errstr" . PHP_EOL);
echo 'Connected to APNS' . PHP_EOL;
// Create the payload body
$body['aps'] = array(
'alert' => ''.$message.'',
'sound' => 'default',
'link_url' => 'http://xxxx.xom',
'category' => 'APP',
'badge' => '1',
);
// Encode the payload as JSON
$payload = json_encode($body);
// Build the binary notification
$msg = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . $payload;
// Send it to the server
$result = fwrite($fp, $msg, strlen($msg));
if (!$result)
echo 'Message not delivered' . PHP_EOL;
else
echo 'Message successfully delivered' . PHP_EOL;
// Close the connection to the server
fclose($fp);
///////////////END SEND PUSH NOTU8FOCATION FOR iOS//////////////////////
}
}
} else {
}
Jede mögliche Hilfe würde geschätzt.
Vielen Dank im Voraus.
Mögliches Duplikat [Paginierung mit MySQL LIMIT, OFFSET] (https://stackoverflow.com/questions/20364349/pagination-using-mysql-limit-offset) – bishop
Sie aktuelle Datenbank Position in einer Datei speichern –
@Bischof, Paginierung?!? –