[Extension] Ext Elliptics

The ExtElliptics is a Yii Framework extension developed by Flamp Tech Team (DoubleGIS LLC).

Provides methods to work with the Elliptics Network that is a fault tolerant key/value storage. See www.ioremap.net/projects/elliptics for more info.

Resources

  • Download link: 3432

ext-elliptics-1.1.zip

Requirements

  • Yii 1.1.*

Installation

  • Unpack all files under your project ‘extensions’ folder

  • Include your new extension into your project main.php configuration file:




'components' => array(

    'elliptics' => array(

         'class' => 'application.extensions.Elliptics.ExtElliptics',

         'privateServerAddress' => '127.0.0.1',

         'publicServerAddress' => 'localhost',

         'writePort' => '8080',

         'readPort' => '80',

         'monitoringPort' => '81',

    ),

    ...

)



  • Configure your Elliptics Proxy so it can accept custom upload and direct requests:



<handlers>

    ...

    <handler pool="read" port="[%port_read%]">

        <component name="elliptics-proxy"/>

    </handler>

    <handler pool="write" port="[%port_write%]">

        <component name="elliptics-proxy"/>

    </handler>

    ...

</handlers>



  • Note, that all files uploaded by extension will have a timestamp in their metadata so you need

    to make requests for file content like this:


localhost/?direct&name=filename.txt&embed_timestamp=1

You can easily hide this by your proxy web-server settings. Nginx configuration example:




   upstream elproxy {

       server unix:/var/run/elliptics/default.sock;

   }

   server {

       listen       80;

       location @elliptics {

            include        fastcgi_params;

            fastcgi_pass   elproxy;

       }

       location ~ ^/([^/?]*\.[^/?]*(\?.*)?)$ {

            set $file $1;

            rewrite ^ /?direct&name=$file&embed_timestamp=1 break;

            try_files @elliptics;

       }

    }

    

  • Enjoy!

Usage:

To upload file:


Yii::app()->elliptics->upload('/path/to/file/1.txt', 'custom_name.txt');

To get uploaded file content:


$fileContent = Yii::app()->elliptics->get('custom_name.txt');

To delete file:


Yii::app()->elliptics->delete('custom_name.txt');

Changelog:

  • 1.1 Initial release

I was looking for crucial information on this subject. The information was important as I am about to launch my own portal.