朝霞市在住のWEB系エンジニアかあさんのPHPメインの雑記帳

ITかあさん

最新記事

LaravelでMySQLのZEROFILLをmigrationで実行する方法

LaravelでMySQLのZEROFILLをmigrationで実行する方法

Laravel
数値型がいい!でもゼロ埋めを許可するINT型といえばMySQLのZEROFILL。ゼロ埋めするならtext系の型にするのもありだけど、やっぱINT型のが速そうなのでやっぱここはZEROFILLで。

ALTER TABLE table_name ADD column_name INT ZEROFILL AFTER column_name2

(AFTER column_name2はcolumn_name2後に追加したいとき。)

これでゼロ埋めのカラムが追加されたけれど、残念ながらLaravelのmigrationはZEROFILL対応してないんで、migrationファイルに直でSQLを書いて実行してあげるほか無いようです。


Laravelが5になってもmigrationにZEROFILLは対応してないので、migrationに直接SQL書いて実行というパターンは変わらないです。

supervisorでQueue監視をしてみた時の話。

ちょっとハマったsupervisorのQueue監視。そもそも起動にすら失敗したのでクラウドメモ。

supervisord 起動までの手順

queue_6986035-1024x630

Queue管理といえばsupervisord。キュー管理といえばsupervisord。大事なことなので2回言いましたよ。
起動までに結構手間取ってしまったのでクラウドメモ。

supervisord インストール

epelリポジトリが入っているとyum でインストールが可能。

yum --enablerepo=epel install -y supervisor

/etc/supervisord.conf 設定変更

今回はLaravelのQueue管理として導入したので、対象となるコマンド、ディレクトリを設定します。

取り急ぎ、追記する形で対象のコマンドとディレクトリ、そしてログファイルを下の方に追記。

supervisordを起動!!

service supervisord start

何かエラる!

socket が行方不明のようだ

http_port=/var/tmp/supervisor.sock ; (default is to run a UNIX domain socket server)
[FAILED]

ソケットのありかを探す

find . -name "supervisor.sock" -ls

supervisor.sockなんてない!!!

なんかこういうの、MySQLのインストに失敗してmysql.sockが無いって言われるのとなんか似てるぞ。。?

困ったときは公式をチェック

sudo touch /var/run/supervisor.sock
sudo chmod 777 /var/run/supervisor.sock

(touchしてsockファイルを作れと。)

issuで作られたsockの場所がたまた/var/run/下な訳であって、必ずしもこのディレクトリに作ることは必須では無いと思われ。
私はとりあえずissuと同じディレクトリで作りました。

上記手順でsockを作ったら再度/etc/supervisord.confをひらいてsockのパスを修正。

supervisordを起動!!

[root@laravel]# service supervisord start
Starting supervisord: Unlinking stale socket /var/run/supervisor.sock
[ OK ]

めでたしめでたし!

監視したい機能が他にもあったら[program:プログラム名称]でどんどん設定すればよろしいはず。
コマンドとディレクトリとログファイルを設定すればよし。

vagrantで作ったCentOS環境にcomposerがインストできない

Couldn’t resolve host ‘getcomposer.org’

vagrantで作ったCentOS環境にcomposerがインストできない

なんなんだろ?Couldn’t resolve host ‘getcomposer.org’。ホストが解決できないとな??
調べてみると、外部のネットワークに繋がらない状態に陥ると このエラーが発生する模様。
試しにwgetで適当に外にアクセスしてみる

wget kaasan.info

だめ、繋がらない。

とりあえず対象のvagrantをhaltしてもう一度 vagrant upで起動したら解決しました。
もしまた次同様の問題発生したら
ネットワーク設定を確認してみようっと。
Couldn’t resolve host ‘getcomposer.org’

/etc/sysconfig/network-scripts/ifcfg-eth0

PHP POSTが多すぎて途中からPOSTが消えちゃったよ

一度にPOSTされる量多すぎて途中からPOSTが消えちゃったよ

php
1ページにカレンダーのように日別にフォームがあって、1000を超えるPOSTデータが発生するケースがあったのですが、あれ??途中からPOSTデータが消失してるっぽい

エラーログを確認すると

PHP Warning: Unknown: Input variables exceeded 1000. To increase the limit change max_input_vars in php.ini.

どうやらついにPOST数の上限に達していた模様。

一度に大量のPOSTを発生させるのもいかがなものかと思うのですが、取り急ぎphp.iniのmax_input_varsを修正すれば解決するらしい。

php.ini

; max_input_vars = 1000

コメントアウトを外して上限数をあげてあげればInput variables exceeded のエラーは取り急ぎ解決できます。
修正したらApacheを再起動して繁栄させます。

これでPOSTの上限数が変更されて POSTデータがまた大量に送れるようになりました。
(まあ、極力POSTの数を抑えるよう修正するのが望ましいですけどね)