質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.53%
cron

cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

1回答

383閲覧

phpで指定した日時に処理を実行するにはどうするのがよいですか

YYYQQQ

総合スコア54

cron

cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

1クリップ

投稿2022/06/18 06:57

私は、PHP(Laravel)を使って、Twitter用のアプリを作ろうとしています。
そのアプリではユーザーが指定した日時(分単位で指定)にツイートする予約ツイート機能を作りたいです。
予約は3件ほどできるようにし、2件目の予約投稿をやっぱりキャンセルしようと思った時は2件目の予約を削除したりできるようにしたいです。(アプリはAWSに置くことを検討しています。)

しかし、TwitterのAPIには、POST /2/tweets、POST statuses/updateなどがありますが、日時を指定することはできません。

そこで、PHPでこの処理を行おうと思うのですが、うまいやり方がわかりません。
sleep関数で、予約日時と現在日時の差分をsleepしたらよいか等考えましたが、その場合2件目の予約投稿を削除するなどの処理が難しいように思います。また、そういう時はこうやるんだ、というもっとスマートなやり方がある気がします。

こういう処理に詳しい方がいらっしゃれば、アドバイス頂けますと幸いです。
どうかよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

色々とやり方はありますが、よくあるのは

  1. 予約投稿したい内容と日時、投稿済み/未投稿をデータベース等に格納する。
  2. データベースにアクセスし、現在より過去かつ未実行のデータを取得→APIにPOST→成功したら「投稿済み」をデータベースに記録するプログラムを書く
  3. 2をcron等を使って毎分実行する(重複実行されないような制御も行う)

という感じの方法ですね。

投稿2022/06/18 07:06

tanat

総合スコア18706

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YYYQQQ

2022/06/19 05:00

なるほどです。。頭がすっきりしました。丁寧にご回答いただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.53%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問