質問箱/2651

カテゴリ
サマリ更新メールを一括して送る
バージョン1.4.5
投稿者katzumi?
状態保留
投稿日2005-03-08 (火) 17:44:42

質問

ページの更新時にメールを送信する機能がありますが、一回の編集に対して必ず一通のメールが送信されます。
これだとたくさんの書き込みがあった場合、メールが何十通も届いてしまいます。特に同一ページへの複数の書き込みは同じタイトルのメールが並ぶことになります。
そこで質問ですが、この更新メールを一定時間ごとにまとめて送るようにすることは出来ますでしょうか?
またそのようなことが実現できるpluginやパッチ等がありますでしょうか?
宜しくお願いします。

回答

  • 一定時間ごとを保証することは、PukiWiki単独では不可能でしょう。ある程度の人気サイトなら、それに近いことは可能でしょうが。 -- 2005-03-08 (火) 20:55:47
    • ということで、簡単なまとめ送りパッチ つ filenotify_digest.diff.gz -- 2005-03-08 (火) 22:22:15
    • なるほど、バックアップと同じ仕組みですね。頻繁に書き込みがあるところであれば、これで問題ないかもしれませんね。 -- teanan 2005-03-09 (水) 01:47:07
  • ありがとうございます。なかなかいい感じです。ただやはり一定時間ごとというのは難しいでしょうか?あれからいろいろ調べて簡易リマインダー機能プラグインをうまく組合わせられればいいのにと思っているのですが。。 -- katzumi? 2005-03-10 (木) 20:19:43
  • PukiWikiは、誰かに閲覧された時しか動きません。従って、単独で一定時間毎を保証するのは原理的に不可能なのです。当然ですが、remind.inc.phpもその点では同じことです。 -- 2005-03-10 (木) 20:59:43
    • 次のものをスキンにでも仕込んで呼び出せば、notify_digestを多少は定期動作に近づけることが出来るでしょう。
      function notify_digest_flush()
      {
              global $notify, $notify_diff_only, $notify_digest, $notify_to, $notify_subject, $notify_header;
              global $smtp_server, $smtp_auth;
      
              if ( PKWK_READONLY || !$notify_digest ) return; // Do nothing
      
               $file = CACHE_DIR.'notify_log.txt';
              if ( !($mt = @filemtime( $file))) return;
      
              if ( ( $mt + $notify_digest) < time()) {
                      $str = implode('',file( $file));
                      unlink( $file);
                      $subject = str_replace('$page', '[Digest]', $notify_subject);
                                 
                      ini_set('SMTP', $smtp_server);
                      mb_language(LANG);
                      if ($smtp_auth) pop_before_smtp();
                      mb_send_mail($notify_to, $subject, $str, $notify_header);
              }
      }
      通常の閲覧でも必ず実行させるため、僅かかもしれませんが重くなることはお忘れ無きよう。
      これで不満なら、もうPukiWikiでの限界を越えていると思います。どこからかcronするか、notifyメールを それなりの機能を持ったもの(MLとか)にでも投げるようにするしかないでしょうね。-- 2005-03-10 (木) 21:13:42
  • 関連?: 欲しいプラグイン/77 メール通知を周期指定できるプラグイン -- 2007-09-23 (日) 15:59:42
  • 1.4.7で更新メールを一括して送るためには、どのファイルを変更すればよいのでしょうか。file.phpとmail.phpのどちらに手をつけたらよいのか分からず、困っています。 -- rim? 2008-12-04 (木) 15:09:33
    • ついでに付け加えてしまうと、理想としては一日分の更新ページリスト(「タイムスタンプを変更しない」にチェックを付けた編集も含めて)をメールで通知するような仕組みが欲しいと思っています。厳密に周期を設定する必要はないのですが、RSSやRecentChengesを使用せず(タイムスタンプに頼らず)、管理者のみに更新ページを一括して通知する仕組みはありませんでしょうか。 -- rim? 2008-12-04 (木) 15:13:15
  • lib/mail.php はメールを送信する機能をまとめてあるだけのファイルなので、こちらを変更してもメールを送ることはできません。pkwk_mail_notify 関数をメールを送信したい場面で呼び出す必要があります。
    1.4.7 のデフォルトでは、file_write 関数内でDIFF_DIR ディレクトリのデータ(差分ファイル)が更新されるたびに、メールを送信するような作りになっています。 -- 2009-05-06 (水) 15:19:36
    • 新たにキャッシュファイルでも用意しないと、「タイムスタンプを変更しない」にチェックを付けた編集も含めて後で通知するのは無理です。(それ以外だけなら、ファイルの更新日時を確認する事で一応は可能ですが・・・)
      また、上にも書かれていますが、PukiWiki 単独では定期動作はできません。このため、「一定時間経過後に、前回メールを送ってからの変更を送信する仕組み」をPukiWiki だけで実現させると、更新の間が空いた場合には複数日分(正確には1日目の分と、間が開いた後の1回目の更新)の更新リストになってしまう可能性があります。これを嫌うのなら、上ですでに書かれているように、外部のプログラムを併用するしか手段がありません。 -- 2009-05-06 (水) 15:19:36


添付ファイル: filenotify_digest.diff.gz 1155件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-05-06 (水) 15:19:36
Site admin: PukiWiki Development Team

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u2. HTML convert time: 0.214 sec.

OSDN