Skip to content

ha1t/sgphp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

8a2b3c3 · Aug 29, 2014

History

83 Commits
Mar 12, 2012
Jul 20, 2011
Mar 12, 2012
Mar 12, 2012
Aug 7, 2013
Jul 20, 2011
Aug 29, 2014
Aug 14, 2013
Jul 20, 2011
Aug 15, 2013
Apr 22, 2014
Apr 22, 2014
Mar 13, 2012
Aug 7, 2013
Aug 7, 2013
Mar 14, 2012
Apr 18, 2014
Apr 18, 2014

Repository files navigation

sgphp

sgphpとは、新月のPHP実装です。sakuは実装が不必要に複雑で、いじるのが面倒くさかったのでPHPでつくり直す事にした。 まともな実装がsaku以外にないのもよくない。 プロトコルドキュメントが本当に最低限で、アプリケーションの実装方法にまで踏み込んでいないので、そのあたりも改善できれば。

特徴

  • レンタルサーバーで動く
  • プロセス常駐しない

インストール方法

ソース一式をルートディレクトリに配置。 dataディレクトリを777に。 server.phpにアクセスすると、data/nodelist.txtが作られる。必要なら手でサーバを追加。 client.phpにある、crawl()を動かすと、他ノードから最新5件のデータを持ってこれる。 client.phpを適当にいじってjoinしないと他ノードがアクセスしてくれないよ。

TODO

まだできていないのでこれからやっていく事

  • スレッド表示系
  • 投稿機能
  • 署名関連
  • タグ関連
  • gzipサポート
  • Server::join()でのホスト名省略時gethostbyaddr()

Memo

  • 置くだけで使えるようにしたい。プロセス常駐させたくない。cronはなるべく使いたくない。レンタルサーバでも動くように。
  • でかいファイルの読み込みはmemory_limitで落としてるけど、fopen() & fgets() である程度はカバーできるかもしれない。
  • 全部GETでやるのは大変おもしろい。file_get_contents()が大活躍。
  • /joinの後、他ノードからよくやってくる通知は、/have,/update。
  • /recent/時刻 の時刻は、いつにするべきか。前回recent時の時間を覚えておく?
  • sakuの場合、投稿されると、gateway.pyのrec.build()で投稿をつくり、UpdateQueueを動かすようだ。
  • 画像が添付されてるクソ重いレコードをどう扱うか。/haveとか/headで容量を取得できないものか。添付ファイルが存在するレコードは無視するという方法がかなり良さそう。
  • ファイルは、無限個のレコードを格納できるので、システム側できるようにする。

mysqlを使うとした場合のTable構成

プロトコルに書かれている「ファイル」と「レコード」の話をみていると、RDBMSで運用するべきに見える。mysqlで運用する場合のTable構成を考える。

  • file

  • id(スレタイのmd5)

  • timestamp

  • title

  • record

  • id(bodyのmd5)

  • timestamp

  • body

About

新月プロトコルのPHP実装

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published