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

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

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

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

3回答

1668閲覧

PHP お知らせ機能実装

art_porokyu

総合スコア44

PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2019/02/11 15:06

編集2019/02/11 15:07

https://feelshare.jp/

このようなサイトを作りまして、ユーザーがコメントしたり投稿したときのお知らせ通知をサイト上で行いたいのですがコードが全くわかりません。

「実現したいこと」
ユーザーが投稿などを行う

他ユーザのページにその旨がお知らせされる

「考え方」
投稿前のDBの情報を読み取り記録する

投稿後のDBの情報を記録する

差異があればその情報をお知らせとして表示する

考え方はこのような感じであっていますでしょうか?

他にもっと簡単な考え方があれば教えてください。

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

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

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

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

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

guest

回答3

0

リアルタイム更新あり・バックグラウンド処理あり

FacebookやTwitterのお知らせをイメージしているのであれば,

  1. 投稿が作成されたとき,対象となるユーザに「データベースに保存される通知」を1人1人個別に作成する。(フォアグラウンドで実行すると重すぎるので,キューワーカープロセスを立ててバックグラウンドで行う)
  2. リアルタイムに通知したければ,↑で作成した情報を WebSocketプロトコル を利用してクライアントに通知する。

という流れになります。

PHP + Node.js 構成なら

  • Laravel
  • Laravel Echo Server (内部に Socket.IO を含む)
  • Laravel Echo (内部に Socket.IO を含む)
  • Redis

という技術スタックで攻めると一番書きやすいでしょうね。
(自分は仕事でちょうどFacebookやTwitterのようなお知らせをこの方式で作りました)

Laravel の力を借りないのであれば,この仕組みを自前で実装することになります。
(正直 Laravel を使っていてもややハイレベルな内容なので,自分だったらできれば自前実装は避けたいところです…)

リアルタイム更新無し・バックグラウンド処理無し(追記)

  1. 投稿が作成されたとき,対象となるユーザに「データベースに保存される通知」を1人1人個別に作成する。

こっちはシンプルなので,素のPHPだけでも十分書けると思います。ポートフォリオ作品作りの目的であればこれで十分だと思います。

投稿2019/02/11 17:32

編集2019/02/12 16:01
mpyw

総合スコア5223

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

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

mpyw

2019/02/11 17:56

サイト拝見しましたが,ノンフレームワークPHP + jQuery の組み合わせですね。フロントエンドは Laravel Echo または Socket.IO を生で使う感じでいいと思いますが,サーバサイドが結構大変そう… 一応 Laravel のキューパッケージは単独で使えるので,部分的に Laravel の力を借りてみるのもありだとは思います。
mpyw

2019/02/11 18:03

もし「リアルタイム通知」「速いレスポンス」を諦めるのであれば,素のPHPで書いてもそんなにつらくないです。
mpyw

2019/02/11 20:55 編集

あとで気づいたんですが,これSPAじゃなくてしっかりページ遷移するタイプのMPAアプリケーションなので,リアルタイム性は全く考慮しなくていいですね…失礼しました。追記します
art_porokyu

2019/02/12 10:06

知らない用語がたくさん・・・笑 ご回答ありがとうございます。 部分的にLaravelを使えば実装しやすくなるのですね。
mpyw

2019/02/12 15:48

>> そんなめんどくさいことしないで、前回のログイン日時より新しいものを取得すればすむ話。 タイムラインが1つだけでフォローという概念がない場合はこの方法でもいけますね。 (拡張性はありませんが
guest

0

ベストアンサー

基本的には掲示板の作り方と一緒です。

お知らせも、DBに登録されているものを最新のものから必要な数だけ取ってくるだけのもの。
書き込み部分はまた別のものなので、別個で考えればいい。

投稿2019/02/11 15:43

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

art_porokyu

2019/02/12 10:09

ご回答ありがとうございます。 なるほど最新からいくつ取得するかですか・・・ 例えば、以前ログインしていた時間を記録する。 再度ログインしたときの時間から以前の時間を引いて、その出た値の時間分遡ってDBから取得するというのは可能でしょうか?
退会済みユーザー

退会済みユーザー

2019/02/12 10:23 編集

そんなめんどくさいことしないで、前回のログイン日時より新しいものを取得すればすむ話。
art_porokyu

2019/02/13 03:07

なるほど。 有難うございます。 やってみます。
art_porokyu

2019/03/11 23:31

time関数を使って実装できました。 ありがとうございました
guest

0

言葉のみの回答ですが、投稿レコードに更新タイムスタンプのフィールドを設け、この更新タイムスタンプが現在よりも指定時間以内の投稿は新規情報としてタイトルを並べるようにすればいいのではないでしょうか。

また、投稿が分刻みで入れ替わる場合には、会員の表示ページに

html

1<meta http-equiv="refresh" content="60">

のようなmetaタグを組み込んでおくこともできます。

投稿2019/02/11 15:41

seastar3

総合スコア2285

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

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

art_porokyu

2019/02/12 10:11

ご回答ありがとうございます。 投稿時間とログイン時間を参照するというのが実装しやすそうですね。 このようなmetaタグがあるのですね。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問