こんにちは!
ナビゲータのEVEです。
PHP8による開発が、なかなか進んでいない状況なのですが、文字クラスのステップを見て驚いています。
ドキュメントを作ることをしない私が作るシステムは、コメントが非常に多いのですが、そのプログラムステップ数が、3,120行あります。文字クラスは今週末ぐらいには完成しそうなのですが、4,000行近くになりそうです。そのような状況を確認しながら、ちょっと、考えさせられています。
[メモリの解放されるタイミング]
やはり、1つのクラスで4,000ステップあるのは長すぎます。しかも、文字クラスに、他のクラスもインポートしているので、かなりメモリに負荷を与えそうです。ただ、それを頭で考えていても答えは分からないので、ChatGPTに使用したクラスがどのタイミングで解放されるのか聞いてみました。
require_onceで呼び出されるクラスがメモリから消えるタイミングは、そのクラスが不要になり、参照されなくなったときです。PHPでは、ガベージコレクション(Garbage Collection)と呼ばれる仕組みがあり、不要になったオブジェクトや変数は自動的にメモリから解放されます。
具体的には、以下のようなタイミングでクラスがメモリから消えます:
1)そのクラスのインスタンスがすべて参照されなくなった場合。
2)クラスを参照している変数や配列要素などが他の値に上書きされた場合。
3)スクリプトの実行が終了し、PHPプロセスが終了した場合。
セッションの終了とは直接関係ありません。クラスの使用が終了したかどうかは、そのクラスを参照する変数やインスタンスが解放されたかどうかによって判断されます。
以上の内容を読んでみると、セッション終了を待たずにメモリ解放されるようなので、もしかしたら気にする必要はないのかもしれません。
[構成管理システム]
ただ、それでも気になります。そこで、構成管理システムで対応しようと検討を開始しました。構成管理システムでは、以下のような感じで管理しようと考えています。
@製造したプログラムを以下の項目を指定してアップロードする。
1)プログラム概要
2)システムバージョン
3)プログラムバージョン
4)リリース日
・日付指定
・即時反映
5)リリース方式(New)
・ソース(原本)
・不要ロジック削除
・暗号化(不要ロジック削除)
細かいことはまだ決まっていないので、割愛しますが、以上の構成管理システムにおいて何が注目点かというと、プログラムは、アップロード後すぐにシステムフォルダに反映されるのではなく、データベースで管理したうえで、指定したリリース日にプログラムをリリースします。以上のような方式だったら、以下の流れで管理することができそうです。
@データベースで管理する場合は、通常のプログラムソースで管理する
Aリリース時にはコメント等、プログラムを実行する上で不要なものはすべて削除してリリースする
以上のような方式だったら、プログラムサイズはかなり抑えることができそうです。ただ、いろいろと調べてみると、コメント等を削除した場合、デバックが大変そうです。そのため、テスト環境とかでは、コメント付きプログラムでも動作することができるように、5)にリリース方式を追加したほうがいいでしょう?
[あとがき]
以上の構成管理システムを今までコンテンツ管理システムと呼称していたのですが、システム製造開始月は12月予定でした。しかし、コンテンツ管理システムで、コンテンツをリリースするという条件が入ると、そのリリース先を管理するシステムも必要になります。いろいろと頭の中で考えてみたのですが、かなり、複雑なモノになりそうです。
もうちょっと考えて、再スケジュールしたほうがよさそうです。
では、また!
【このカテゴリーの最新記事】