ホームページ  >  記事  >  バックエンド開発  >  C++ から移行しましたが、PHP の初期化はどこで行われますか?プログラムの初回起動時に設定データを読み込む必要があるということでしょうか?

C++ から移行しましたが、PHP の初期化はどこで行われますか?プログラムの初回起動時に設定データを読み込む必要があるということでしょうか?

WBOY
WBOYオリジナル
2016-06-23 13:51:151004ブラウズ

たとえば、C++ には main 関数があり、起動時の初期化や構成テーブルの読み取りなどを行うことができます。これを行う必要があるのは 1 回だけです。
次に、PHP を使用してサーバーを記述します。どこに追加する必要がありますか。これと同じような機能?ありがとう!


ディスカッション(解決策)への返信

プログラムに直接入力してください!

プログラムに直接入れてください!



しかし、Web アクセスごとに、サーバー側の対応する PHP が 1 回実行されるのではないでしょうか?毎回リソースを読み込むプログラムではないでしょうか? ? PHP に起動する MAIN 関数がない場合は、グローバル変数クラスを作成し、このクラス内のリソースを読み取りたいと考えています。このグローバル変数は一度だけ実行する必要がありますよね?

それを当たり前のことだと思わないでください!
C++ で書かれた 2 つのアプリケーションを実行するとき、main 関数は 1 回だけ実行されますか?

当たり前のことだと思わないでください!
C++ で書かれた 2 つのアプリケーションを実行するとき、main 関数は 1 回だけ実行されますか?



おそらく私は C++ から転送できず、WEB サーバーについての理解が十分ではないので、私の理解を教えてください:

たとえば、C++ では、サービス プログラムを起動し、起動プロセス中に MAIN を 1 回実行します。 、そしてこれ サービスプログラムは常に存在しており、次のステップは処理のためにクライアントからさまざまなデータパケットを受け入れることです

したがって、PHP には初期化サービスを提供できるものが必要だと思います。 ?たとえば、構成テーブルの一部は MYSQL に配置されており、起動時に一度メモリに読み込むだけで、他の WEB リクエストを満たすことができます。しかし、クライアントがWEB上のページにアクセスするたびに、対応するPHPを再度実行する必要があるようです。ここが分かりません。


プログラムに直接入れてください!



しかし、Web アクセスごとに、サーバー側の対応する PHP が 1 回実行されるのではないでしょうか?毎回リソースを読み込むプログラムではないでしょうか? ? PHP に起動する MAIN 関数がない場合は、グローバル変数クラスを作成し、このクラス内のリソースを読み取りたいと考えています。このグローバル変数は一度だけ実行する必要がありますよね?
各クライアントアクセスにC++を使用した場合、プログラムクライアントを開き直すことになります。
一般的に、PHP グローバル変数または実行されるプログラムは、これらのグローバル構成情報を使用する必要があるファイルにこのファイルを含めることができます。
同じ訪問ユーザー (セッションの有効期限が切れていない、通常、ブラウザを閉じた後にセッションの有効期限が切れる) の場合、Duitian のようなユーザーはセッションを使用して関連する構成オプションを保存できるため、ユーザーはセッションからセッションに直接アクセスできます。他のページにアクセスして、このユーザーの構成オプションを取得します。



プログラムに直接参加してください!



しかし、Web アクセスごとに、サーバー側の対応する PHP が 1 回実行されるのではないでしょうか?毎回リソースを読み込むプログラムではないでしょうか? ? PHP に起動する MAIN 関数がない場合は、グローバル変数クラスを作成し、このクラス内のリソースを読み取りたいと考えています。このグローバル変数は一度だけ実行する必要がありますよね?
各クライアントアクセスにC++を使用した場合、プログラムクライアントを開き直すことになります。
一般的に、PHP グローバル変数または実行されるプログラムは、これらのグローバル構成情報を使用する必要があるファイルにこのファイルを含めることができます。
同じ訪問ユーザー (セッションの有効期限が切れていない、通常、ブラウザを閉じた後にセッションの有効期限が切れる) の場合、Duitian のようなユーザーはセッションを使用して関連する構成オプションを保存できるため、ユーザーはセッションからセッションに直接アクセスできます。他のページにアクセスして、このユーザーの構成オプションを取得します。

たとえば、ロードしたい設定は、mysql からテーブルを読み取ることです。たとえパブリックな init.php があったとしても、すべてのユーザーの Web アクセスにはこの init.php が含まれますが、毎回 mysql にアクセスしてそれを読み取る必要はありませんか?

1. 設定に関しては、より有名な PHP 開発フレームワークと既存の PHP オープン ソース プログラムを学ぶことができます。これらのフレームワークは初期化設定で適切に機能します。 2. C/S アーキテクチャから B/S アーキテクチャへの変換がより困難な概念は、Web バックエンド プログラムの生存サイクルです。C++ を使用している場合、Web バックエンドには無限の機能がないことがわかります。 While(true) のようなループやブロックを使用すると、実行後にインスタンスが破棄されます。実行ステータス情報や実行結果などを残しておきたい場合は、実行結果を特別な一時ファイル [セッション] に保存することしかできません。この一時ファイルは特定の時点で保存されます(設定できますが、設定しない場合は通常ブラウザを閉じます)。破棄されなければ、このプログラムを再度開くと、実行中のファイルを読み取ることができます。この一時ファイルを開いてその時点のステータスを確認し、この時点で再度実行を続行します。
3. Web バックエンド プログラムには通常、優れたユーザー エクスペリエンスを実現するためにタイムアウト制限があるため、while(true) のような無限ループは発生しません。

PHP プログラムは C++ デスクトップ プログラムと同じで、起動するたびに環境を初期化する必要があります
これは理解できるはずです。

いわゆるサービス プログラムは、メモリ内に常駐するプログラムです。初期化は 1 回だけ行う必要があるように思えますが、そうではありません。2 つのサービス プログラムを開始した場合 (もちろん、プログラムは競合しないように設計する必要があります)、それぞれのプログラムを完了する必要があります。 php はサーバー側のスクリプトであり、Web サーバーが起動するため、メモリには常駐しません。
そのため、すべての呼び出しはプログラム内で直接初期化する必要があります




!


しかし、Web アクセスごとに、サーバー側の対応する PHP が 1 回実行されるのではないでしょうか?毎回リソースを読み込むプログラムではないでしょうか? ? PHP に起動する MAIN 関数がない場合は、グローバル変数クラスを作成し、このクラス内のリソースを読み取りたいと考えています。このグローバル変数は一度だけ実行する必要がありますよね?


各クライアントアクセスにC++を使用した場合、プログラムクライアントを開き直すことになります。
一般的に、PHP グローバル変数または実行されるプログラムは、これらのグローバル構成情報を使用する必要があるファイルにこのファイルを含めることができます。 同じ訪問ユーザー (セッションの有効期限が切れていない、通常、ブラウザを閉じた後にセッションの有効期限が切れる) の場合、Duitian のようなユーザーはセッションを使用して関連する構成オプションを保存できるため、ユーザーはセッションからセッションに直接アクセスできます。他のページにアクセスして、このユーザーの構成オプションを取得します。


たとえば、ロードしたい設定は、mysql からテーブルを読み取ることです。たとえパブリックな init.php があったとしても、すべてのユーザーの Web アクセスにはこの init.php が含まれますが、毎回 mysql にアクセスしてそれを読み取る必要はありませんか?
これは、テーブルの種類によって異なりますが、ユーザー設定情報であり、コンテンツがそれほど多くない場合は、セッション ストレージを使用できます。
データの場合、データの内容によって、キャッシュされるものもあれば、読み取りのみ可能なものもあります。

1. 設定に関しては、より有名な PHP 開発フレームワークと既存の PHP オープン ソース プログラムを学ぶことができます。これらのフレームワークは、初期化設定で適切に機能します。 2. C/S アーキテクチャから B/S アーキテクチャへの変換がより困難な概念は、Web バックエンド プログラムの生存サイクルです。C++ を使用している場合、Web バックエンドには無限の機能がないことがわかります。 While(true) のようなループやブロックを使用すると、実行後にインスタンスが破棄されます。実行ステータス情報や実行結果などを残しておきたい場合は、実行結果を特別な一時ファイル [セッション] に保存することしかできません。この一時ファイルは[設定できますが、設定しない場合は通常ブラウザを閉じます]が破棄されますが、破棄されていない場合は再度プログラムを開くと開くことでその時の実行状況を確認することができます。この一時ファイルを保存し、この時点でもう一度実行を続行します。 3. Web バックエンド プログラムには通常、優れたユーザー エクスペリエンスを実現するためにタイムアウト制限があるため、while(true) のような無限ループは発生しません。


そうですね、その通りです。これら 2 つのアーキテクチャのライフサイクルは異なります。私はまだそれを変更していません。

それでは、B/S アーキテクチャの場合、グローバルに一意であり、初期化が一度だけ必要なものはどこに配置すべきでしょうか?セッションって、同じユーザーを一つの単位として考えないといけないですよね?

PHP プログラムは C++ デスクトップ プログラムと同じで、起動するたびに環境を初期化する必要があります
これは理解できるはずです。

いわゆるサービス プログラムは、メモリ内に常駐するプログラムです。初期化は 1 回だけ行う必要があるように思えますが、そうではありません。2 つのサービス プログラムを開始した場合 (もちろん、プログラムは競合しないように設計する必要があります)、それぞれのプログラムを完了する必要があります。 php はサーバー側のスクリプトであり、Web サーバーが起動するため、メモリには常駐しません。
だから呼び出されるたびに初期化する必要があるのですね


わかりました。つまり、PHPは呼び出されるだけ(例えばユーザーが一度訪問する)だけで、呼び出された後は破棄されてしまいますよね?



はい!
使用すると完了し、次回使用するときに最初からやり直します


1. 設定に関しては、より有名な PHP 開発フレームワークと既存の PHP オープン ソース プログラムを学ぶことができます。これらのフレームワークは初期化で適切に機能します。構成は良い。 2. C/S アーキテクチャから B/S アーキテクチャへの変換がより困難な概念は、Web バックエンド プログラムの生存サイクルです。C++ を使用している場合、Web バックエンドには無限の機能がないことがわかります。 While(true) のようなループやブロックを使用すると、実行後にインスタンスが破棄されます。実行ステータス情報や実行結果などを残しておきたい場合は、実行結果を特別な一時ファイル [セッション] に保存することしかできません。この一時ファイルは[設定できますが、設定しない場合は通常ブラウザを閉じます]が破棄されますが、破棄されていない場合は再度プログラムを開くと開くことでその時の実行状況を確認することができます。この一時ファイルを保存し、この時点でもう一度実行を続行します。

3. Web バックエンド プログラムには通常、優れたユーザー エクスペリエンスを実現するためにタイムアウト制限があるため、while(true) のような無限ループは発生しません。



そうですね、その通りです。これら 2 つのアーキテクチャのライフサイクルは異なります。私はまだそれを変更していません。

それでは、B/S アーキテクチャの場合、グローバルに一意であり、初期化が一度だけ必要なものはどこに配置すべきでしょうか?セッションって、同じユーザーを一つの単位として考えないといけないですよね?

グローバルに一意で、一度だけ初期化されるものは何なのか教えてください。

はい! 使ったら忘れて、次回からまた始めましょう

決断力があり、わかりやすく、要点を押さえています。


1. 設定に関しては、より有名な PHP 開発フレームワークと既存の PHP オープン ソース プログラムを学ぶことができます。これらのフレームワークは、初期化設定で適切に機能します。 2. C/S アーキテクチャから B/S アーキテクチャへの変換がより困難な概念は、Web バックエンド プログラムの生存サイクルです。C++ を使用している場合、Web バックエンドには無限の機能がないことがわかります。 While(true) のようなループやブロックを使用すると、実行後にインスタンスが破棄されます。実行ステータス情報や実行結果などを残しておきたい場合は、実行結果を特別な一時ファイル [セッション] に保存することしかできません。この一時ファイルは[設定できますが、設定しない場合は通常ブラウザを閉じます]が破棄されますが、破棄されていない場合は再度プログラムを開くと開くことでその時の実行状況を確認することができます。この一時ファイルを保存し、この時点でもう一度実行を続行します。
3. Web バックエンド プログラムには通常、優れたユーザー エクスペリエンスを実現するためにタイムアウト制限があるため、while(true) のような無限ループは発生しません。



そうですね、その通りです。これら 2 つのアーキテクチャのライフサイクルは異なります。私はまだそれを変更していません。

それでは、B/S アーキテクチャの場合、グローバルに一意であり、初期化が一度だけ必要なものはどこに配置すべきでしょうか?セッションって、同じユーザーを一つの単位として考えないといけないですよね?

グローバルに一意で、一度だけ初期化されるものは何なのか教えてください。

例えば、冒頭で言った構成表。この構成テーブルは MYSQL にあります。この割り当てテーブルはすべてのユーザーが利用できます。 今の話で、PHPは「一度使うと終わって、次に使うとまた始まる」ということが分かりましたので、この設定コード(MYSQLに問い合わせて調整する)をPHPで書くと、 、その後、ユーザーがアクセスするたびに PHP コードを毎回 1 回実行する必要があります。
したがって、C++ の C/S アーキテクチャでは、S 側で開始すると、MAIN 関数があり、その後、設定コードが MAIN 関数内で 1 回実行され、設定がサーバーのメモリにインポートされます。他のユーザーがローカルで呼び出すだけです。

ということで、こんな投稿をしました〜 ということは、キャッシュか何かでしかできないということですか?




1. 設定に関しては、より有名な PHP 開発フレームワークと既存の PHP オープン ソース プログラムを学ぶことができます。これらのフレームワークは初期設定で適切に機能します。 2. C/S アーキテクチャから B/S アーキテクチャへの変換がより困難な概念は、Web バックエンド プログラムの生存サイクルです。C++ を使用している場合、Web バックエンドには無限の機能がないことがわかります。 While(true) のようなループやブロックを使用すると、実行後にインスタンスが破棄されます。実行ステータス情報や実行結果などを残しておきたい場合は、実行結果を特別な一時ファイル [セッション] に保存することしかできません。この一時ファイルは[設定できますが、設定しない場合は通常ブラウザを閉じます]が破棄されますが、破棄されていない場合は再度プログラムを開くと開くことでその時の実行状況を確認することができます。この一時ファイルを保存し、この時点でもう一度実行を続行します。
3. Web バックエンド プログラムには通常、優れたユーザー エクスペリエンスを実現するためにタイムアウト制限があるため、while(true) のような無限ループは発生しません。



そうですね、その通りです。これら 2 つのアーキテクチャのライフサイクルは異なります。私はまだそれを変更していません。
それでは、B/S アーキテクチャの場合、グローバルに一意であり、初期化が一度だけ必要なものはどこに配置すべきでしょうか?セッションって、同じユーザーを一つの単位として考えないといけないですよね?
グローバルに一意で、一度だけ初期化されるものは何なのか教えてください。

例えば、冒頭で言った構成表。この構成テーブルは MYSQL にあります。この割り当てテーブルはすべてのユーザーが利用できます。
今の話で、PHPは「一度使うと終わって、次に使うとまた始まる」ということが分かりましたので、この設定コード(MYSQLに問い合わせて調整する)をPHPで書くと、 、その後、ユーザーがアクセスするたびに PHP コードを毎回 1 回実行する必要があります。
したがって、C++ の C/S アーキテクチャでは、S 側で開始すると、MAIN 関数があり、その後、設定コードが MAIN 関数内で 1 回実行され、設定がサーバーのメモリにインポートされます。他のユーザーがローカルで呼び出すだけです。

ということで、こんな投稿をしました〜 ということは、キャッシュか何かでしかできないということですか? 1. 構成可能性については、より有名な PHP 開発フレームワークと既存の PHP オープン ソース プログラムを調べることができます。これらのフレームワークは、初期構成で適切に機能します。 2. C/S アーキテクチャから B/S アーキテクチャへの変換がより困難な概念は、Web バックエンド プログラムの生存サイクルです。C++ を使用している場合、Web バックエンドには無限の機能がないことがわかります。 While(true) のようなループやブロックを使用すると、実行後にインスタンスが破棄されます。実行ステータス情報や実行結果などを残しておきたい場合は、実行結果を特別な一時ファイル [セッション] に保存することしかできません。この一時ファイルは[設定できますが、設定しない場合は通常ブラウザを閉じます]が破棄されますが、破棄されていない場合は再度プログラムを開くと開くことでその時の実行状況を確認することができます。この一時ファイルを保存し、この時点でもう一度実行を続行します。 3. Web バックエンド プログラムには通常、優れたユーザー エクスペリエンスを実現するためにタイムアウト制限があるため、while(true) のような無限ループは発生しません。

そうですね、その通りです。これら 2 つのアーキテクチャのライフサイクルは異なります。私はまだそれを変更していません。

それでは、B/S アーキテクチャの場合、グローバルに一意であり、初期化が一度だけ必要なものはどこに配置すべきでしょうか?セッションって、同じユーザーを一つの単位として考えないといけないですよね?


グローバルに一意で、一度だけ初期化されるものは何なのか教えてください。


例えば、冒頭で言った構成表。この構成テーブルは MYSQL にあります。この割り当てテーブルはすべてのユーザーが利用できます。
今の話で、PHPは「一度使うと終わって、次に使うとまた始まる」ということが分かりましたので、この設定コード(MYSQLに問い合わせて調整する)をPHPで書くと、 、その後、ユーザーがアクセスするたびに PHP コードを毎回 1 回実行する必要があります。

したがって、C++ の C/S アーキテクチャでは、S 側で開始すると、MAIN 関数があり、その後、設定コードが MAIN 関数内で 1 回実行され、設定がサーバーのメモリにインポートされます。他のユーザーがローカルで呼び出すだけです。

ということで、こんな投稿をしました〜 ということは、キャッシュか何かでしかできないということですか?


はい


分かりました。最初にそれを PHP クエリに直接投げ込み、次にパフォーマンスのボトルネックがあった場合にキャッシュを使用して一致させました。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。