- 投稿日:2020-10-16T23:35:55+09:00
LambdaでLaravelのコマンドを定期実行する
Laravelで書いたバッチを実行するにあたって、EC2インスタンスだと実行タイミング以外もコストがかかるし、ECSタスクだとコンテナの管理がちょっと面倒。Lambdaで動かせればメンテも楽だし安く上がりそうなのでやってみた。
前提
brefphp を導入済の環境。
実行するのは Laravel で作成済みのコマンド、
croncmd:exec
。通常はphp artisan croncmd:exec
で実行。brefphp の導入については brefphpを使って簡単にLaravelをサーバレス環境で動かす - Qiita がとてもわかりやすいです。
serverless.yml
今回は
serverles.yml
の設定のみです。例として月曜から金曜まで 09:00-17:00まで5分ごとに定期実行する設定を記載します。input 部分で実行するコマンドを、rate で実行タイミングを指定します。時間についてはGMTで設定することに注意してください。
service: test-app provider: name: aws region: ap-northeast-1 runtime: provided plugins: - ./vendor/bref/bref functions: artisan: handler: artisan timeout: 120 # in seconds layers: - ${bref:layer.php-73} - ${bref:layer.console} events: - schedule: rate: cron(0/5 0-8 ? * MON-FRI *) # GMT input: '"croncmd:exec"'
- 投稿日:2020-10-16T19:56:47+09:00
【Laravel】whereHasでリレーションのネスト先を検索条件として指定する方法。
- 投稿日:2020-10-16T18:53:42+09:00
【Docker】Todoリスト作成時に詰まったところ
環境:Mac
Laravel 6.x系
Mariadb【Docker】dbコンテナに入り、データを見ると日本語が???で表示される
https://qiita.com/n_oshiumi/items/cfe91c60730f602b38eb
こちらの記事を参考にしましたが、私の場合は以下のエラーが発生し、解決できなかった。E: Unable to locate package language-pack-ja-base E: Unable to locate package language-pack-jaそこで上記エラーを検索しまくり、やっと以下の記事にたどり着いた。
https://www.atmarkit.co.jp/ait/articles/1806/28/news043.html結論としては、先に [apt update] をすることで、[language-pack-ja-base]らがインストール可能になる。
root # apt update root # apt-get install language-pack-ja-base language-pack-ja
- 投稿日:2020-10-16T18:53:42+09:00
【Docker】dbコンテナに入り、データを見ると日本語が???で表示される
環境:Mac
Laravel 6.x系
Mariadbhttps://qiita.com/n_oshiumi/items/cfe91c60730f602b38eb
こちらの記事を参考にしましたが、私の場合は以下のエラーが発生し、解決できなかった。E: Unable to locate package language-pack-ja-base E: Unable to locate package language-pack-jaそこで上記エラーを検索しまくり、やっと以下の記事にたどり着いた。
https://www.atmarkit.co.jp/ait/articles/1806/28/news043.html結論としては、先に [apt update] をすることで、[language-pack-ja-base]らがインストール可能になる。
root # apt update root # apt-get install language-pack-ja-base language-pack-ja
- 投稿日:2020-10-16T17:41:21+09:00
Laravel gmail Connection could not be established with host smtp.gmail.com 原因と対策
laravelでメールを送りたい
gmailを使おうとすると
Connection could not be established with host smtp.gmail.com :stream_socket_client(): SSL operation failed with code 1. OpenSSL Errorというエラーが発生するようになった。
ちょっと前までは同じ設定でうまく言っていたのに突然使えなくなった。設定確認
laravel
\.envMAIL_DRIVER=smtp MAIL_HOST=smtp.gmail.com MAIL_PORT=465 MAIL_USERNAME=xxxx@gmail.com MAIL_PASSWORD=xxxx MAIL_ENCRYPTION=ssl MAIL_FROM_ADDRESS=xxxx@gmail.com MAIL_FROM_NAME=xxxx@gmail.comgmail
安全性の低いアプリは許可
https://myaccount.google.com/lesssecureapps原因は?
アバスト無料アンチウイルスのスキャンでした。
設定から送信メールのスキャン(smtp)を外せば解決しました。
フリーソフトに紛れ込むことが多いアバストアンチウイルスですが
こいつがメールをスキャンするから失敗するようになっていたのでした。
不要な人はアンインストールでも解決するでしょうね。
誰かの参考になれば幸いです。
- 投稿日:2020-10-16T13:44:50+09:00
TwitterOAuthを使用してフォロー,RT,いいねをする
前提
https://twitteroauth.com/
のドキュメントを参考にcomposerからインストール
https://developer.twitter.com/
から申請しAPIキーを取得(最低限の)前提知識
スクリーンネームとユーザーID
・スクリーンネーム -> @hogehoge 的なID,いつでも変更できる
・ユーザーID -> 絶対に変えられないID ※今回はユーザーIDを利用する
・API(アプリケーションインターフェース) -> 認可サーバーのID
・アクセストークン ->twitterが出した「ここまでの範囲なら利用していいよ!」ってやつ
詳しくはhttps://booth.pm/ja/items/1296585
の書籍を参考にしてくださいtest.php<?php require "vendor/autoload.php"; use Abraham\TwitterOAuth\TwitterOAuth as TwitterOAuth; $consumerKey = "#########"; //APIキーを記述 $consumerSecret = "######################################"; //シークレットAPIキーを記述 $accessToken = "############################################"; //自分もしくは他人のアクセストークン $accessTokenSecret = "###########################################"; //自分もしくは他人のシークレットアクセストークン $twitter = new TwitterOAuth($consumerKey, $consumerSecret, $accessToken, $accessTokenSecret); $id ='################'; //いいね、RT対象のstatusIDを記述 $user_id ='#####################'; //フォローする対象のユーザーIDを記述 $retweet = $twitter->post('statuses/retweet',['id' => $id]); //RTする $favorites = $twitter->post('favorites/create', ['id' => $id]); //いいねする $follow = $twitter->post('friendships/create', ['user_id'=> $user_id]); // フォローする
- 投稿日:2020-10-16T11:09:51+09:00