特にマルチスレッドの処理 (この場合は IOS へのプッシュ) の点で、php の foreach と for の間に違いはありますか?
問題が発生し、その解決に長い時間を費やしましたが、最終的に、for を使用するのは簡単ではありませんでしたが、foreach を使用した方がうまく機能することがわかりました。
<?php // 循环有问题require_once "/home/bae/app/include/db.php"; $db_obj = new DB();$sql = "select appleID from appleDevice ";$result = $db_obj->db_array($sql);print_r("the array is:".$result);var_dump($result); $countArray = count($result); print_r("number:".$countArray); $passphrase = 'zhaojian'; $message = 'My first push notification!'; $ctx = stream_context_create(); stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem'); stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase); // Open a connection to the APNS server $fp = stream_socket_client( 'ssl://gateway.sandbox.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' ); // Encode the payload as JSON $payload = json_encode($body); //$result = array("2d4401e324e7bd0ce574508b0849c7584b965df4ab183c82b3da65855835ec27","e20f2879b0ff6b7c6554b44f339c9e4bade2ee4a5a3a6d5de77bda074269221f"); foreach ($result as $device) { $deviceToken = $device['appleID']; print_r("the ".$i." item :".$deviceToken); $msg = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . $payload; $result = fwrite($fp, $msg, strlen($msg)); if (!$result) echo 'Message not delivered' . PHP_EOL; else echo 'Message successfully delivered' . PHP_EOL;} fclose($fp); ?>
このコードは、php が IOS にプッシュするためのものです。
foreach を使用する場合、for i=0 i
ディスカッションへの返信 (解決策)
for ループがどのように書かれているかわかりませんでした
しかし、
foreach ( $result as $device) {
$result = fwrite($fp, $msg , strlen($msg));
元の量を変更します
for ループがこのような場合、当然機能しません
配列の参照に対する foreach ループ
をどのように書いたかわかりませんでしたfor ループ
ただし、foreach には
foreach ( $result as $device) {
$result = fwrite($fp, $msg, strlen($msg)); が含まれています
は元の量を変更します
for ループが次のような場合、当然うまくいきません
foreach は配列の参照をループすることです
for はこのように書いていました
うーん、これはサーバーにデータをアップロードするだけですか?値の変更が必要ですか?
{
$deviceToken = $result[$i]['appleID'] // 配列から値を取得 $result
print_r ( "***".$deviceToken."**");
// バイナリ通知を構築します
$msg = chr('n', 32) . ) .pack('n', strlen($payload)) . $payload;
// サーバーに送信します
$result ($fp, $msg, strlen($msg));
の値
if (!$result)
echo 'メッセージが配信されませんでした' .PHP_EOL;
else
echo 'メッセージが正常に配信されました'
}
{
$deviceToken = $result[$i]['appleID'] // 配列 $result から値を取得します
print_r("***".$deviceToken."**");
// バイナリ通知を構築します
$msg = chr(0) .pack('H*', $deviceToken) .pack('n', strlen($payload)) payload;
// サーバーに送信します
$result = fwrite($fp, $msg, strlen($msg)) // $result の値を変更します
if (!$result)
echo 'メッセージが返されません配信されました' . PHP_EOL;
else
echo 'メッセージは正常に配信されました'
Dejun は、3 回の人生で幸運であると説明します。 ! !実際に結果の名前を「for」に変更してみたところ、偶然にも同じ名前になりました~~~
ことに気づきました。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

PHP開発における固体原理の適用には、次のものが含まれます。1。単一責任原則(SRP):各クラスは1つの機能のみを担当します。 2。オープンおよびクローズ原理(OCP):変更は、変更ではなく拡張によって達成されます。 3。Lischの代替原則(LSP):サブクラスは、プログラムの精度に影響を与えることなく、基本クラスを置き換えることができます。 4。インターフェイス分離原理(ISP):依存関係や未使用の方法を避けるために、細粒インターフェイスを使用します。 5。依存関係の反転原理(DIP):高レベルのモジュールと低レベルのモジュールは抽象化に依存し、依存関係噴射を通じて実装されます。

システムが再起動した後、UnixSocketの権限を自動的に設定する方法。システムが再起動するたびに、UnixSocketの許可を変更するために次のコマンドを実行する必要があります:sudo ...

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

PHP開発でPHPのCurlライブラリを使用してJSONデータを送信すると、外部APIと対話する必要があることがよくあります。一般的な方法の1つは、Curlライブラリを使用して投稿を送信することです。

記事では、入力検証、認証、定期的な更新など、脆弱性から保護するためのフレームワークの重要なセキュリティ機能について説明します。

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。
