JAVIER MARTINEZ

Web Developer

Etiqueta: PHP

“Unable to create the cache directory” error in Symphony2

One common issue in Symfony2 projects is bad directory permission settings. The “app/cache” and “app/logs” directories are the only who writes Symfony2.

Change “_www” to the web server user and “javierms” to your command line user:

$ rm -rf app/cache/*
$ rm -rf app/logs/*
$ sudo chmod +a “_www allow delete,write,append,file_inherit,directory_inherit” app/cache app/logs
$ sudo chmod +a “javierms allow delete,write,append,file_inherit,directory_inherit” app/cache app/logs

Create a SSL certificate on OS X

cd /etc/apache2
sudo ssh-keygen -f server.key
sudo openssl req -new -key server.key -out request.csr
sudo openssl x509 -req -days 365 -in request.csr -signkey server.key -out server.crt

The field “CommonName” of the certificate must match the ServerName directive in the Apache configuration file /etc/apache2/httpd.conf

Add the fol­low­ing to your httpd-ssl.conf to use the new certificate:

SSLCertificateFile “/etc/apache2/server.crt”
SSLCertificateKeyFile “/etc/apache2/server.key”

Alternative PHP Cache (APC) on OS X

The PHP installed in OS X 10.8 is 5.3.10. We install PHP 5.4 from the php-osx project opening up a Shell and execute the following line:

$ curl -s http://php-osx.liip.ch/install.sh | bash -s 5.4

We should link to the new php file:

$ sudo mv /usr/bin/php /usr/bin/php53
$ sudo ln -s /usr/local/php5/bin/php /usr/bin/php

We execute the following line:

$ sudo pecl install apc

Last we should insert the following lines in the php.ini:

extension=apc.so
[apc]
apc.enabled=1
apc.shm_segments=1
apc.shm_size=32M
apc.cache_by_default=1
apc.stat=1
apc.stat=7200 //2 hours

Obtener el total de seguidores en Twitter con PHP

Limitaremos el número de conexiones a Twitter, accediendo como máximo una vez cada hora.
Pasado ese tiempo actualizaremos el valor en nuestro “cache_archivo”.

<?php
function twitter_contador($nombreusuario) {

	$cache_archivo = CACHEDIR . 'twitter_contador' . md5 ( $nombreusuario );

	if (is_file ( $cache_archivo ) == false) $cache_tiempo = strtotime ( '1978-09-04 13:10' );
	else $cache_tiempo = filemtime ( $cache_archivo );

	$tiempo_actual = strtotime ( date ( 'Y-m-d H:i:s' ) );
	$tiempo_diferencia = $tiempo_actual - $cache_tiempo;
	$tiempo_recarga = 3600; // mínimo de segundos antes de volver a realizar la conexión a twitter

	if ($tiempo_diferencia > $tiempo_recarga) {
		$xml = file_get_contents ( 'http://twitter.com/users/show/' . $nombreusuario );
		$perfil = new SimpleXMLElement ( $xml );
		$contador = $perfil->followers_count;
		if (is_file ( $cache_archivo ) == true) unlink ( $cache_archivo );
		touch ( $cache_archivo ); // momento de modificación cambiado a la hora actual
		file_put_contents ( $cache_archivo, strval ( $contador ) );
		return strval ( $contador );
	}
	else {
		$contador = file_get_contents ( $cache_archivo );
		return strval ( $contador );
	}
}
echo twitter_contador('PlasmikMedia');
?>

Obtener tweets con PHP

&lt;?php
function twitter_feed($username) {
	$feedurl = &quot;http://search.twitter.com/search.atom?q=from:&quot;.$username.&quot;&amp;rpp=1&quot;;
	$feed = file_get_contents($feedurl);
	$s1 = explode(&quot;&lt;content type=\&quot;html\&quot;&gt;&quot;, $feed);
	$s2 = explode(&quot;&lt;/content&gt;&quot;, $s1[1]);
	
	$tweet = $s2[0];
	$tweet = str_replace(&quot;&amp;lt;&quot;, &quot;&lt;&quot;, $tweet);
	$tweet = str_replace(&quot;&amp;gt;&quot;, &quot;&gt;&quot;, $tweet);
	
	return $tweet;
}
echo twitter_feed(&quot;PlasmikMedia&quot;);
?&gt;

Call MySQL stored procedure from PHP

&lt;?php
require_once('adodb/adodb.inc.php');
require_once('sqlprocedure.php');
$data_base = 'mysql';
$user = 'root';
$passwd = '';
$host = 'localhost';
$db_name = 'members';
$dsn = &quot;$data_base://$user:$passwd@$host/$db_name?clientflags=65536&quot;;
$db = new SqlProcedure($dsn);

$row = $db-&gt;fetchAll(&quot;CALL select_members()&quot;); // procedure call
echo &quot;&lt;pre&gt;&quot;;
print_r($row);
echo &quot;&lt;/pre&gt;&quot;;
?&gt;

Seguir leyendo

© 2017 JAVIER MARTINEZ

Tema por Anders NorenArriba ↑