I am a bit curious how DF handles caching and when does it expire the cache? Is it explained somewhere in the docs?
Prior to the 1.7 release, the caching was a bit of a mess. There were three different caches doing pretty much the same thing.
For the 1.7 version, we consolidated these caches into a single “app store”. This is the main, and only, cache used by the DSP now. It is a file based cache and by default, lives in /tmp/.dsp
. There is also another tiny cache in /tmp/.kc
used to keep environment information that is global to the machine.
In addition, we added support for memcached. To enable use of memcached, you must do the following:
- Install
memcached
if not already installed:$ sudo apt-get install memcached
- Install the PHP memcached extension:
$ sudo apt-get install php5-memcached
- Enable the module:
$ sudo php5enmod memcached
- If you’re running
php5-fpm
, restart it:$ sudo service php5-fpm restart
- Copy the
config/databases/memcache.config.php-dist
file toconfig/memcache.config.php
and change to match your setup. - Delete the old cache directories in
/tmp
:$ sudo rm -rf /tmp/.dsp/ /tmp/.kc/
- Restart your web server
At this point, when the system starts up, it will discover the memcached server and use it instead of the /tmp/.dsp
file location. Log in to your DSP and then look in the /tmp
directory. If there is no /tmp/.dsp
directory, then memcached is being used.
We will offer more caching options in the future. Hope that helps!
okay i did the first two steps which i ran from the /apps/dreamfactory directory.
The sudo php5enmod memcached command returns “Command not found”
That is the server details in amazon EC2 “This security group was generated by AWS Marketplace and is based on recommended settings for DreamFactory powered by Bitnami version 1.5.9-1 on Ubuntu 12.04.4 provided by Bitnami”
After googling for a while it seems that this version of Ubuntu doesn’t have it installed http://askubuntu.com/questions/495920/php5enmod-returns-command-not-found
any Idea how I can resolve that issue?
many thanks
I still can’t get this to work with my setup. I would really appreciate any help!!
Thank you
That’s ok, the php5enmod
tool only makes symlinks. You can do it manually:
-
Make sure you have installed the
memcached
PHP extension (sudo apt-get install php5-memcached
). This creates the/etc/php5/mods-available/memcached.ini
file. Check it and make sure it looks kosher. -
Depending on which versions of PHP you have installed, there will be a corresponding directory created under
/etc/php5
. Forphp5-cli
, the directory is/etc/php5/cli
. For PHP FPM, the directory is/etc/php5/fpm
, etc. Beneath each of these directories is another directory calledconf.d
(i.e./etc/php5/cli/conf.d
):
$ dir /etc/php5/
total 36K
drwxr-xr-x 7 root root 4.0K Aug 19 16:34 .
drwxr-xr-x 195 root root 12K Sep 9 13:46 ..
drwxr-xr-x 3 root root 4.0K Aug 19 13:14 cgi <---- php5-cgi
drwxr-xr-x 3 root root 4.0K Aug 19 16:34 cli <---- php5-cli
drwxr-xr-x 4 root root 4.0K Aug 19 16:34 fpm <---- php5-fpm
drwxr-xr-x 2 root root 4.0K Aug 21 16:30 mods-available <---- all installed extensions
-rw-r--r-- 1 root root 70 Jan 8 2014 mods-available/memcached.ini <---- The memcached config file
- For each of the installed PHP5 runtimes (i.e. cgi, cli, fpm, etc.) in which you wish to have
memcached
available; create a symlink from/etc/php5/mods-available/memcached.ini
into theconf.d
directory of that runtime:
$ cd /etc/php5/fpm/conf.d
$ ln -s ../../mods-available/memcached.ini 20-memcached.ini
$ cd ../../cli/conf.d
$ ln -s ../../mods-available/memcached.ini 20-memcached.ini
```<br/>I doubt you're using CGI so I didn't show that in the example. The **20-** priority in front of the file name is inserted/managed by the `php5enmod` and `php5dismod` tools. I put the **20-** in the symlink name so it can be removed with php5dismod, should you find that it is working on your box.
* Restart your server(s):<br/>
sudo service apache2 restart
sudo service nginx restart
$ sudo service php5-fpm restart
* Check if it's loaded:<br/>
$ php -i | grep memcached
/etc/php5/cli/conf.d/20-memcached.ini,
memcached
memcached support => enabled
libmemcached version => 1.0.18
…
At this point, you should be good to go. To fully ensure that the **memcached** stuff is being used, delete any caches that the DSP may have created:
$ sudo rm -rf /path/to/your/dsp/storage/.private/app.store /tmp/.dsp* /tmp/.dreamfactory* /tmp/.kc
These are all the places where the DSP caches, or has cached in the past, data.
Fire up your browser and go to your DSP, click around and close your browser. Now, look in the directories mentioned above. They shouldn't be there. If they are there, then your memcache isn't working. If they are **not** there, your memcache is working fine.
Let me know if you still need help.
How do i know which PHP5 runtime i am using?
What’s in your /etc/php5
directory?
cli conf.d fpm mods-available
Looks like you’re running an FPM system. Try one of these:
Stand-Alone Installations
-
Make sure you that the file
memcached.ini
is in your/etc/php5/mods-available
directory -
Perform the following:
$ cd /etc/php5/fpm/conf.d
$ sudo ln -s ../../mods-available/memcached.ini 20-memcached.ini
$ cd ../../cli/conf.d
$ sudo ln -s ../../mods-available/memcached.ini 20-memcached.ini
$ sudo service php5-fpm restart && sudo service apache2 restart
You may safely ignore any “link exists” error during above the
ln -s
commands. Also, if you’re runningnginx
instead ofapache2
, substitutenginx
withapache2
in theservice restart
command above.
Bitnami Stack Installations
Bitnami stack installations are a bit different. They install a private copy of apache and php under the initial Bitnami installation directory. I know you’re on Ubuntu, but not sure if you installed the Bitnami stack.
Until Bitnami includes the memcached
extension into their distribution (next release), you will not be able to use memcached
.