PHP関連のことを調べてみた2021年09月29日

PHP関連のことを調べてみた2021年09月29日
目次

PHPでお手軽にサーバリソースをモニタリング

Webサービスなどを運用するにあたり、障害発生を未然に防ぐためにサーバ監視ツールを導入している方も多いかと思います。
検索すると多様なツールがあって選定に悩むところですが、高性能である必要性がなければ自作でいいじゃん!
ということで、PHPでお手軽にサーバリソースのモニタリングをやってみます。

## 環境
– CentOS 8
– PHP 8
– Apache(prefork MPM)
– MySQL

## ロードアベレージ
“`php
// 過去1分間のロードアベレージを取得
$loadAverage = sys_getloadavg()[0];
if ($loadAverage > 1) {
// ロードアベレージが1を超えてたらアラートを飛ばす処理
}
“`

## ディスク
“`php
$diskFree = (int) disk_free_space(‘/’) / 1024 / 1024; // 空き(MB)
$diskTotal = (int) disk_total_space(‘/’) / 1024 / 1024; // 合計(MB)
if ($diskFre

元記事を表示

【Laravel】 Selectフォームでdisableを使用するとバリデーションに引っ掛かる

###Selectフォームでdisableを使用するとバリデーションに引っ掛かる

####問題となったコード
edit状態の際にdisableが有効になると思ってほしい

“`PHP.○○Blade.php
{{Form::select(‘fruits’, [‘apple’, ‘banana’, ‘kiuwi’]),
[$is_edit ? ‘disable’ : ”,
]}}
“`
Requestで必須としてバリデーションしている

“`PHP.○○Request.php
‘fruits’ => [
‘required’,
],
“`
####具体的な問題点
disableするとPOSTされないので必須のバリデーションに引っ掛かる

参考記事
https://lightgauge.net/language/html/2525/

####解決策
インプットタグにtype=hiddenとvalueを指定して記述する

“`PHP.○○Blade.php
{{Form::select(‘fruits’, [‘apple’, ‘banana’, ‘ki

元記事を表示

【PHP】SimpleXMLオブジェクトの不思議な挙動

PHPのSimpleXMLオブジェクトに対してエラー処理をしようとしたところ、改めてこのオブジェクトの仕組みが分からなくなり、理解するのにだいぶかかった。「あれっ」となるところがあり一筋縄ではいかなかったので、まとめておきます。
※ 以下のコードの実行環境は、PHP 7.4 です

# 存在しないプロパティを参照すると「空のSimpleXMLオブジェクト」が返る

次の処理は、XMLから、ユーザ名を取得し配列にしています。

“`PHP



001
Yamada


002
Tanaka


003
Sato

元記事を表示

“SQLSTATE[HY093]: Invalid parameter number”あるある

PHPからPDOのPrepared Statementを使ってMariaDBを操作してると、たまに遭遇するのが表題のエラー。
何がどうあかんのか具体的に教えてくれないので、意外とハマりがちでして。

以下、筆者が経験的にマスターしたエラーの原因あるあるを。

***
**1.パラメータ名が間違っている**
今一度、落ち着いて確認しましょう:sweat_smile:

***
**2.SQLの指定が間違っている**
これ、意外と分かりにくいんですよね。
MariaDBは、下記の方法で再起動することなくクエリーログを取得できます。
ここで実際にPrepareされたSQLの内容が分かるので、実際の値を当てはめて指定内容が正しいか確かめるとよいでしょう。

①Mariadbにrootでログインして、以下のコマンドを実行します。

“`
SET GLOBAL general_log = ‘ON’
“`
:::note warn
該当のMariaDBエンジンを使ってる全データベースでクエリーログを取得する(=オーバーヘッドが増える)ので、テストサーバーなどを用い、ほかのプログラムに影響を与えな

元記事を表示

laravelでPostgreSQLのbyteaに画像を格納したときのメモ

<<環境>>
・PHP 7.4
・laravel8
・PostgreSQL12

PostgreSQLのbytea型に画像データを保存する必要が出て、
クエリービルダでうまく行かずにPDOを使用して実装した際の処理内容です。
テーブルには
・ID
・バイナリデータ(img_bin)
・MimeType(mimetype)
・ファイル名
のカラムを持つ前提で、データの挿入を行います。

$id = レコードのID
$file = $request->file('file'); // リクエストのファイルを取得
$org_logo_filename = $file->getClientOriginalName(); // アップされたオリジナルのロゴファイル名取得(デバッグ等で使用)
$mimetype = $file->getClientMimeType(); // 画像を表示する際のmimetypeとして使用
$tmp_path = $file->getRealPath(); // 実画像のパスを取得
$fp = fopen($tmp_path

元記事を表示

【第一回】コロナ禍だから何かできることをー 自宅療養者連絡ツール ー

#まえがき
###お前の力はこんなもんじゃないだろう!
>「 国を変えるのは、政治家じゃない、サラリーマンだ!」

(エンゼルバンク)

まだまだ技術力不足で自分一人では実現不可能だったので公開します。
こんな時代だからこそ人を豊かにする道具をもっと作っていけたらいいなって思ってます。

#実装イメージ図
LINEを利用して保健所の担当者の負担を軽減するとともに、自宅療養者はいつでもつながっている安心感を持たせるためのツールイメージです。

![2021_09_03 7_27 Office Lens.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/744261/c70538e9-0267-d49d-e0c9-66493779a7ca.jpeg)

#実装イメージ図
担当者と自宅療養者とのLINEの連携部分は完成しました。
次回、第二回で設定方法を説明します。

それに合わせて、担当者が操作するPC画面も併せて開発していきます。