個人用ツール

「OpenPNE3ノウハウ:画像などのアップロードされたデータだけ別のデータベースに保存する」を編集中

提供: OpenPNE3まとめwiki

移動: 案内, 検索

警告: ログインしていません。

編集すると、IPアドレスがこのページの編集履歴に記録されます。
この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。
最新版 編集中の文章
行1: 行1:
 
OpenPNE3は日記などでアップロードされた画像などをすべてデータベースに保存するため、その量が多くなるとデータベースのバックアップに時間が掛かってしまいます。file・file_binテーブルを隔離できれば画像だけバックアップの頻度を少なくするといったことも可能になるので、できるかどうか試した記録をここに残しておきます。参考程度にどうぞ。
 
OpenPNE3は日記などでアップロードされた画像などをすべてデータベースに保存するため、その量が多くなるとデータベースのバックアップに時間が掛かってしまいます。file・file_binテーブルを隔離できれば画像だけバックアップの頻度を少なくするといったことも可能になるので、できるかどうか試した記録をここに残しておきます。参考程度にどうぞ。
  
== 手順 ==
+
Good job making it apaper easy.
 
+
<div style="color: red">
+
:※ この手順はOpenPNE3を'''最初からインストール'''することを前提としています。すでに使用しているデータを消さずに移行する方法は自分で調べて下さい。
+
:※ 見ての通りとてもいい加減な方法なので、環境によっては失敗してデータが消えたり読み込めなくなったりするかもしれません。
+
:※ データベースをマスター・スレーブに分割する構成にする場合は'''この方法は使えません'''。
+
</div>
+
 
+
1. ここではアップロードされたデータをMySQLではなく'''SQLite'''データベースに保存します。前もって必要なパッケージ等をインストールしておいて下さい。Debian等の場合は、
+
sudo aptitude install sqlite3 php5-sqlite
+
で必要なものがインストールされます。
+
 
+
2. 次に config/ProjectConfiguration.class.php を修正します。ファイル中の setupProjectOpenPNEDoctrine の部分を下記のように書き換えて下さい。
+
<source lang="php">
+
  public function setupProjectOpenPNEDoctrine($manager)
+
  {
+
    // You can write your own configurations.
+
 
+
    // In default, OpenPNE uses foreign key.
+
    // If you want not to use foreign key, comment out the following configuration:
+
    // $manager->setAttribute(Doctrine::ATTR_EXPORT, Doctrine::EXPORT_ALL ^ Doctrine::EXPORT_CONSTRAINTS);
+
 
+
    $manager->setAttribute(Doctrine::ATTR_EXPORT, Doctrine::EXPORT_ALL ^ Doctrine::EXPORT_CONSTRAINTS);
+
    $manager->openConnection('sqlite:openpne3-uploads.sqlite', 'slave-uploads');
+
    $manager->bindComponent('File', 'slave-uploads');
+
    $manager->bindComponent('FileBin', 'slave-uploads');
+
  }
+
</source>
+
 
+
3. さらにOpenPNE3自体にも修正を加えます。lib/util/opDoctrineQuery.class.php の preQuery の部分を下記のようにコメントアウトして下さい。
+
<source lang="text">
+
/*
+
  public function preQuery()
+
  {
+
    if ($this->specifiedConnection)
+
    {
+
      $this->_conn = $this->specifiedConnection;
+
    }
+
    else
+
    {
+
      $this->_conn = self::chooseConnection($this->shouldGoToMaster, $this->getType());
+
    }
+
  }
+
*/
+
</source>
+
 
+
4. lib/util/opDoctrineRecord.class.php の save の部分を下記のようにコメントアウトして下さい。
+
<source lang="text">
+
/*
+
  public function save(Doctrine_Connection $conn = null)
+
  {
+
    if (is_null($conn))
+
    {
+
      $conn = opDoctrineQuery::chooseConnection(true);
+
    }
+
 
+
    parent::save($conn);
+
  }
+
*/
+
</source>
+
 
+
5. OpenPNE3のインストールを実行します。
+
php symfony openpne:install
+
 
+
6. 何事もなく使用できれば成功です。
+
+
 
+
[[Category:OpenPNE3ノウハウ|{{PAGENAME}}]]
+

OpenPNE3まとめwikiへの投稿は、すべてCreative Commons Attribution (詳細はOpenPNE3まとめwiki:著作権を参照) のもとで公開したと見なされることにご注意ください。 あなたが投稿したものを、他人がよって遠慮なく編集し、それを自由に配布するのを望まない場合は、ここには投稿しないでください。
また、投稿するのは、あなたが書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください。 著作権保護されている作品を、許諾なしに投稿しないでください!

中止 | 編集の仕方 (新しいウィンドウで開きます)