kinstaでPHP7.4→8.1に変更してざっくりと速度を測定してみた

kinstaでPHP7.4→8.1に変更してざっくりと速度を測定してみました。

なんでざっくりかというとホームページを制作途中のため、ざっくりなページでで試してみましたw

ホームページの速度結果

PHPバージョン HTML読み込み終了までの時間
PHP7.4 1.25秒
PHP8.1 0.952秒

ざっくりと24%速度が改善しています。PHPバージョンを変更するだけでこれだけ改善します。計測用に何度も行ったわけではないのでご参考までに。

※Chromeのデベロッパーツールで計測しました。

アクセス速度を改善したい場合はこれはやるべき事項ですね。

 

PHP7.4 vs PHP8.1をエックスサーバーで試してみた。

PHP8.1の効果が2022年11月9日時点で効果が確認できかなったので結果掲載はやめました( ;∀;)

「エックスサーバーで運用するときは最新且つ推奨のPHPバージョンを利用しているのがよい!!」

 

という本日の結論でした。時代とともに変わると思いますが・・・。

 

とりあえず、エックスサーバーでワードプレスを運用中の方はPHP7.4で今のところ行きましょう!

sshをパスワード付きでログイン許可してサーバーを1日起動していたら…

sshのログインですが、今は認証鍵を使うのが一般的だが、検証用などでめんどくさいので手抜きしていたら意外とアタックがあったのでメモしてみた

最終ログイン: 2021/08/16 (月) 07:41:08 JST日時 pts/0
最後の失敗ログイン: 2021/08/17 (火) 14:43:37 JST xxx.xxx.xxx.xxxから開始日時 ssh:notty
最後の正しいログインの後に 11109 回の失敗ログインの試行があります

まあ、約1日11,109回のログイン失敗だそうです。

 

ちゃっと、対策しようね~って、検証機でも思いました

ZenlogicサーバでPHPファイルの変更が反映されるのに時間がかかる

ZenlogicサーバーではPHPファイルのキャッシュがきついようだ。

どうにもならなかったので、Zend OPCacheを停止してみた。

 

.htaccess

php_flag opcache.enable Off

 

 

でいいかなと思ったんだけどダメ。WordpressのテーマなどのPHP更新して操作するとサーバーエラーがでる。(再読み込みすると消える)使いにくい。

 

pawを試してみた

RESTなどでHTTPのリクエストを検証するのに簡単にできるものが無いのかなって探していたら、Pawなるものに出会った。Windows版は無いようなのでちょっと残念

https://paw.cloud/

 

無料トライアルが30日間あるのでそれで試してみることにしてみた。

 

とりあえず、WordPressの初期状態でPOSTSをGETしてみた。

 

いろいろとテストするのに便利だが..その話はまたべっと。

ざっくりとCENTOS8、PHP7.4でLaravel 7を始めてみます。

PHP frameworkの「Laravel 」をざっくりと初めて見たいと思います。

 

ざっくりなのでまずはインストールをします。

 

OSの準備Centos8をインストールしてSELINUXを無効化しておきます。

SELINUXは無効で。再起動後の処理っす。

 vi /etc/selinux/config
 SELINUX=disabled

 

あやまって、「SELINUXTYPE=disabled」って記述してしまうのは私ぐらいだろうか…きっとこの時、あーめんどーって感じで記述してしまうんだろうなきっと・・・。

 

 

Laravelのインストール手順

PHP7.4をインストールする。手順としては↓の感じphp -vで7.4になっていることを確認。

# EPELリポジトリを追加
dnf -y install epel-release


# Remiリポジトリを追加
dnf -y install http://rpms.famillecollet.com/enterprise/remi-release-8.rpm

# PHP 7.4 インストール
dnf -y module install php:remi-7.4

# PHP拡張機能インストール
dnf install -y php-bcmath php-mcrypt php-pdo php-xml php-tokenizer php-mysqlnd php-pecl-xdebug php-gd php-intl php-zip php-opcache

php -v

 

Composer のインストール

# インストーラーのダウンロード
wget https://getcomposer.org/installer -O composer-installer.php

# インストール
php composer-installer.php --filename=composer --install-dir=/usr/local/bin

# ねんのためアップデート
composer self-update

 

 

次に「laravel」をインストールする

composer global require laravel/installer

# bash_profileにパスを追加
vi ~/.bash_profile

# PATH=「$HOME/.config/composer/vendor/bin」を追加
PATH=$PATH:$HOME/bin:$HOME/.config/composer/vendor/bin


# .bash_profileを読み込む
source ~/.bash_profile

 

これでlaravelの利用準備が整いました。

 

projectの作成

プロジェクトを準備します。プロジェクトごと1アプリです。

laravel new [project_name]

※どこに設置するのか考えて行います。

 

「storage」と「cache」にWEBサーバーからの書き込みができる費用がある

chown -R apache:apache [プロジェクトパス]/storage
chown -R apache:apache [プロジェクトパス]/bootstrap/cache

 

公開フォルダは「public」になるように設定します。

 

その後、ブラウザでアクセスすると下記のように表示されます。

 

そーいえば、初期ページ以外でコントローラ―を追加してnot fundとなった場合は

WEB側の設定(httpd.conf等)で「AllowOverride All」とすれば可能だと思う。

 

■メモ

ルート情報:routesの中に格納

view系:「resources」>「views」の中

コントローラ―:コマンドで作成する。「app」>「http」>「Controllers」のフォルダの中。

※php artisan makecontroller コントローラー名

 

コントローラ―を追加した場合は「ルート情報にコントローラ―情報を追加」する

 

■コマンド

・ルーティング定義の一覧を表示します。

 php artisan route:list

 

 

 

 

 

 

VIMEO APIを試してみる

PHPからVIMEO APIの接続を試してみます。

 

VIMEO SDK

https://developer.vimeo.com/api/libraries

 

リファレンスの中を見るとテストができるのでそこで試してみてもいいかも

 

https://developer.vimeo.com/api/reference

APIでアクセスするためにアプリを作る

https://developer.vimeo.com/apps

※アップロードにはアプリを作った後に申請しないといけなくてこれが5日間程度かかると思ってよい。営業日ベースなら1週間って感じ。長いよ~~。

 

とりあえず、自分自身の情報を見てみる

<?php
require 'vimeo.php/autoload.php';
use Vimeo\Vimeo;
$client_id = 'xxxxxxxxxxxxxx';
$client_secret = 'xxxxxxxxxxxxxx';
$access_token = 'xxxxxxxxxxxxxx';

//Vimeoに接続
$lib = new \Vimeo\Vimeo($client_id, $client_secret, $access_token);

//自身の情報を取得
$user = $lib->request('/me');
echo '<pre>';
print_r($user);
echo '</pre>';
?>

 

って実行したらエラー「 syntax error, unexpected ‘?’ in /vimeo.php/src/Vimeo/Vimeo.php on line 163」およよ??

163行目の?stringは、PHP7.1以上で有効だったよ。?をとってみたらOK。まあ、PHP7.0でテストするのもどうなのかと思って、PHP7.1に変更してみた。

public function getToken(): ?string
↓
public function getToken(): string

 

とりあえず戻り値の最初は

Array
(
    [body] => Array
        (
            [uri] => /users/xxxxxx
            [name] => xxxxxx
            [link] => https://vimeo.com/userxxxxxxxxx
            [location] => 
            [bio] => 
            [short_bio] => 
            [created_time] => 2020-02-26T09:50:36+00:00

 

ってなところ。

 

自分自身のアカウント情報:$lib->request(‘/me’);

自分自身のビデオリストを取得:$lib->request(‘/me/videos’)

 

ってできる。

 

アップロードできるのかな?

APIのページを参考に…https://developer.vimeo.com/api/guides/videos/upload

 

APIをインストール。これでやらないと、必要なものを自分で集めるのが大変!!

composer require vimeo/vimeo-api

 

あとは、APIドキュメントページを参考に記述すればアップロードまで完了!!

 

以外とここまでは簡単だった。

 

操作として

1.アップロード

2.設定の変更

となるようだ。

 

 

プライバシー設定メモ

・VIMEO.COMで非公開

$client->request($uri, array(
  'privacy' => array(
'view' => 'disable',
  ),  
  
), 'PATCH');

 

コメント禁止

'comments'=>'nobody',

 

 

どこの動画に埋め込みを許可しますか?の設定メモ

 

リファレンスによると

$client->request($uri . '/privacy/domains/example.com', 'PUT');
$client->request($uri, array(
  'privacy' => array(
    'embed' => 'whitelist'
  )
), 'PATCH');

echo $uri . ' will only be embeddable on "http://example.com".';

 

って感じです。

 

PUTでドメインを追加して、この動画は、特定のドメインからだけだよ==って感じ。

 

えーと、このあたりは「https://developer.vimeo.com/api/reference/videos#embed-privacy」も参考にしておく必要がある。

 

で、ドキュメント通りに行っても動かん!!ってはまりました。

 

まず、1行目のドメインを追加する箇所を実行したときにレスポンスが「[status] => 405」」だと。ちなみに[Allow] => PUT,DELETE,OPTIONSって言われています。なのでPUTできていない。

 

APIのコードを読む限り、requestのパラメーターって3番目がMETHODの指定。おろ?ドキュメントは2番目。

request($url, $params = array(), $method = 'GET', $json_body = true, array $headers = array()): array

 

じゃあ、2番目のパラメーターをarray()で処理してみた。

 

 $client->request($uri . '/privacy/domains/example.com', array(),'PUT');

 

こんどは、[status] => 400 で戻ってきたぁ。

で、今度はエラーメッセージあり。[error] => The video\’s embed privacy isn’t set to specific domains.

whiteリスト対応になってないっぽい。それなので、順番を動画をwhitelistに対応にしてからドメインを追加してみた。

 

そしたら[status] => 200 でwhitelistに追加できた。めでたしめでたし。

 

 

 

プレイヤーを試してみる

特定のドメインだけをしている場合にWordPressの管理画面で動画を見ようとすると…

「大変申し訳ございません」って見れない…

 

VIMEO HELPを見ると

 

設定にドメインがリストされているにも関わらずエラーが引き続き表示される場合は、アドレスバーで指定されているドメインがVimeoプレーヤーに送信されたドメインと異なる場合があり、この場合プライバシーに関するエラーが表示されます。
リファラーがプレーヤーのiframeに到達できないよう、サイトのHTMLコードがブロックしている可能性がないかウェブデベロッパにお問い合わせください。

 

えーと、iframeを読み込むときにリファラーを送っていないんだと。。

 

では実際に…

 

・再生可能な場合

 

・再生不可能な場合

 

リファラーがいません。WordPressさん。。。

ということでmetaでリファラーすればきっと表示。

 

プレイヤー回りのカスタマイズ

「動画」>「プリセットを埋め込む」で新規作る。

PlayerのAPIで埋め込み指定するよりもこっちで指定したほうが良い。ロゴ削除や変更も可能だし

PHP:Cannot use a scalar value as an array

PHPでたまにおやおやっていうエラーを出してしまったときのメモ。

 

エラー内容「Cannot use a scalar value as an array」

翻訳すると「スカラー値を配列として使用できません」

 

え?っと、、、

 

ちゃんと変数の内容を追ってみるとわかると思いますが、

例えば:X=1としておいたのに途中からX[‘id’] =12345ってしているケースに発生します。

 

たぶん、最初は値を入れておけばよかったのですが後ほどで配列しなければならないっていうときに発生させてしまう。エラーです。

 

オレ(1)、Xっていう変数に入っていていっぱいなのに、勝手に配列ってして拡張されてオレ(1)はどうしたらいいんだ??っていう感じです。

 

 

netbeansでSFTPを追加して接続テストすると「invalid privatekey」と出て接続できない

長いことnetbeansでSFTPを接続して何もなくすんなりいっていたのですがひさびさにやってみたら、「invalid privatekey」とでて接続できない。

SSHの公開鍵と秘密鍵はtera termで作成ずみ。

 

ということで、

 

PuTTy Key Generatorでキーをコンバートしてみる

 

1.teratermで作成した秘密鍵を読み込む(File > Load Private Key)

2.コンバートしてエクスポートで保存する(Conversions > Export Open SSH Key)

 

これでエクスポートしたところ問題なく利用可能。。

 

そっか、Tera termバージョンアップして何か変わったのかな。。。チェックしてなかったな。

 

Googleマップがオフラインが利用できるようになってゼンリンからの地図提供が終了

Googleマップがオフラインが利用できるようになるとのこと。

https://japan.googleblog.com/2019/03/GoogleMapsRefresh.html

 

 

Google MAPを見ると今まではゼンリンの文字があったのだが、地図データがGoogleとなっている。

 

Google  MAPの埋め込み地図等の関数に変更は今のところ影響ないみたいです。

Python + scrapyで画像集め

Python + scrapyで画像集めできるようにプログラムを組んでいたが、何か取れない画像があった。。

設定は初期状態のままだったのでROBOTSTXTテキストに従う場合、制限があったようだ。

 

っていうことで望ましくないが

ROBOTSTXT_OBEY = False

で取れた。