PHPでAPIを作ったんだけれど
処理時間が60秒経過したところで
HTTPステータスコードが504で返ってきてしまって
エラーログを確認したところ、下記のメッセージが
(70007)The timeout specified has expired:~
httpd.conf に下記の1行を追加したら解決した
デフォルト(記述がない)と60秒みたい
Timeout 120
PHPでAPIを作ったんだけれど
処理時間が60秒経過したところで
HTTPステータスコードが504で返ってきてしまって
エラーログを確認したところ、下記のメッセージが
(70007)The timeout specified has expired:~
httpd.conf に下記の1行を追加したら解決した
デフォルト(記述がない)と60秒みたい
Timeout 120
Puppeteer を使っていて
なにかと便利なwaitFor
だけどこんなメッセージが表示されて
いずれ使えなくなるみたいな。。。
waitFor is deprecated and will be removed in a future release. See https://github.com/puppeteer/puppeteer/issues/6214 for details and how to
migrate your code.
そんなときはコレだ!
const wait = (ms) => new Promise(resolve => setTimeout(resolve, ms))
(async() => {
。。。
await wait(3000);
。。。
DB::raw を使えばいけるんだろうけど
こんな感じでもいけるようなのでメモメモ
1 2 3 4 |
$unique = DB::table("table") ->distinct('column') ->count('column'); |
PHPで日付の差を比較するのは簡単にできるのでメモメモ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
// 現在時刻 $dateNow = new DateTime(); // 時、分を0にする $dateNow->setTime(0, 0); // 比較する時間 $dateTo = new DateTime('2020-10-10'); // 比較 $diff = $dateNow->diff($dateTo); if ($diff->invert == 1) { // もし$dateNowのほうが未来だった場合 $sa = "ehe"; } else { if($diff->y > 0) { $sa = "{$diff->y}年{$diff->m}ヶ月"; } else if($diff->m > 0) { $sa = "{$diff->m}ヶ月"; } else { $sa = "{$diff->d}日"; } } |
Laravelのblade内で、DataTablesを使ってたんだけど
td の中にプルダウンを設置したくて、
どうにかできないかと
もっとよい方法がありそうだけど
とりあえずこれでしのいだ
1 2 3 4 5 6 7 8 |
{ 'data' : 'test', render: function(data, type, row) { let tag = '{{ Form::select('test[]', $testSelectList, null, ['class'=>'form-control']) }}'; tag = tag.replace('value="'+data+'"', 'value="'+data+'" selected="selected"'); return tag; } }, |
Laravel で ajax の POST通信をしようとしたところ
エラーとなったのでその対処方法をメモメモ
HTMLのどっかにmetaタグでcsrf-tokenの文字列を記載。
1 |
<meta name="csrf-token" content="{{ csrf_token() }}"> |
あとは、ajaxのところで、headerにこの値を
セットすればOK!!
1 2 3 4 5 6 |
$.ajax({ 'type': 'POST', 'dataType': 'json', headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') }, |
ついでに時間がたったら更新しておく
1 2 3 4 5 6 |
setInterval(refreshToken, 3600000); //1 hour function refreshToken(){ $.get('refresh-csrf').done(function(data){ $('meta[name="csrf-token"]').attr('content',data); }); } |
Laravel使ってて
.envファイルとか更新したのに
反映されなかったりするのは
すべてキャッシュのせいだー!
コマンドラインで
これをたたけば解決なり!
1 2 3 4 |
php artisan cache:clear php artisan config:clear php artisan route:clear php artisan view:clear |
Console\Comands でバッチプログラムを作成したときに
パラメータを渡す方法をメモメモ
2つあって
1 2 3 4 5 6 7 8 9 10 |
// こんな感じにすると protected $signature = 'test:hoge {--hogehoge=}'; public function handle() { // こんな感じで受け取れる $hogehoge = $this->option("hogehoge"); // 実行するときはこんな感じ php artisan test:hoge --hogehoge=1 |
もうひとつは
1 2 3 4 5 6 7 8 9 10 |
// こんな感じにすると protected $signature = 'test:hoge {hogehoge?}'; public function handle() { // こんな感じで受け取れる $hogehoge = $this->argument("hogehoge"); // 実行するときはこんな感じ php artisan test:hoge 1 |
両方ともパラメータなしでも実行できる
基本だけど一応メモメモ
・composer require
パッケージを追加するときに使用
composer.json も更新される
開発環境で実行
・composer update
composer.json に記載されているパッケージを最新バージョンにアップデート
composer.lock も更新される
開発環境で実行
・composer install
composer.json に記載されているパッケージを、
composer.lock に記載されているバージョンでインストール
composer.json とcomposer.lock さえあれば
どこの環境でも同じパッケージが入れられる
すばらしいw
なんとなくやる機会があったので
いちおう忘れないようにメモメモ
まずは composer で phpmailer をインストール
1 |
composer require phpmailer/phpmailer |
https://github.com/PHPMailer/PHPMailer
あとはこんな感じ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
use PHPMailer\PHPMailer\PHPMailer; $mail = new PHPMailer(true); $host = 'smtp.gmail.com'; $userName = 'xxx@gmail.com'; $password = 'xxxxx'; $from = 'xxxxxx'; $fromname = 'xxxxx'; $to = 'xxxxxxxxx'; $subject = '件名'; $body = '本文'; $mail->SMTPDebug = 2; $mail->isSMTP(); $mail->SMTPAuth = true; $mail->Host = $host; $mail->Username = $userName; $mail->Password = $password; $mail->SMTPSecure = 'tls'; $mail->Port = 587; $mail->CharSet = "utf-8"; $mail->Encoding = "base64"; $mail->setFrom($from, $fromname); $mail->addAddress($to); $mail->Subject = $subject; $mail->Body = $body; $mail->send(); |