blog sur le développement web, jquery,css3, Magento, Symphony, php et bien d'autres choses

Archives de la catégorie ‘PHP’

PHP : machine learning, algorithme aléatoire pondéré et Router urls ou comment rediriger vers des urls en fonction de leur poids

php router url

pour ceux qui désirent faire un router url en fonction d’une configuration par poids par URL voici un script qui pourra vous être utile.

admettons que vous ayez 8 URLS de page de vente sur lesquelles rediriger du trafic et certaines vous rapportent plus que d’autres, vous pouvez faire en sorte de rediriger plus souvent sur l’une ou l’autre d’entre elles en leur affectant un poids, plus le poids est élevé plus la page sera utilisée comme redirection.

l’algorithme utilisé pour ce script est très proche de l’algorithme de sélection aléatoire pondérée.


        // plus le poids est élevé plus l'url va ressortir
        $arrayRules = array(
         'http://url1.com' => 10,
         'http://url2.com' => 20,
         'http://url3.com' => 30,
         'http://url4.com' =>; 90,
        );

        $arSite = array_keys($arrayRules);
        $arRules = array_values($arrayRules);

        $total = array_sum($arrayRules);
        $rdNumber = rand(0, $total);

        $seek = 0;
        $resultat = 0;

        for ($i = 0; $i < count($arRules); $i++) {

            if ($rdNumber <= $seek + $arRules[$i]) {
                $resultat = $i;
                break;
            }
            $seek += $arRules[$i];
        }

        // retourne l'url sur laquelle rediriger
        return $arSite[$resultat];

une optimisation intéressante de ce script serait de mettre en place un système de « machine learning » pour ne plus avoir a configurer les poids a la main mais de manière automatique en s’appuyant sur les statistiques de performance des pages en question.

PHP : détecter qu’on est en mode CLI

Bien souvent vous êtes amené à créer des CRON JOB. ces derniers sont souvent appelé en mode CLI (command line interface). Hors parfois pour une raison X ou Y dans le script php appelé, vous avez peut être besoins de détecter que vous êtes en mode CLI. (pour le chargement d’une conf spéciale en DEV par exemple).

Pour ce faire il existe une fonction PHP qui s’appelle:

php_sapi_name();
if(php_sapi_name() === 'cli') {
   echo 'on est en mode console';
}

php_sapi_name



URL rewriting : comment réécrire les URLs

la réécriture d’url, vous ne savez pas comment faire ?je vais tenter dans cet article de donner la base pour que vous puissiez comprendre les mécanismes de la reconstruction des urls de votre site web.

tout d’abord,  c’est quoi cette idée saugrenue de vouloir réécrire les urls? la réponse c’est que cela d’avoir des urls plus lisibles, et pour les robots du référencement de mieux répertorier le site. En effet si on récrit son url avec des mots clefs simplement, cela ne sera que meilleur pour le référencement du site. Mais revenons en au code.

identifions deja la forme de vos anciennes url. prenons exemple d’une url d’article et de page:

http://www.monsite.fr/page/article.php?id=10&page=20&categorie=maison

nous allons faire en sorte que cette url devienne:

http://www.monsite.fr/page/article-10-20-maison

 

pour cela, créer un fichier .htaccess et écrivez ceci dedans:


# Le serveur doit suivre les liens symboliques :
Options +FollowSymlinks

# Activation du module de réécriture d'URL :
RewriteEngine on

#--------------------------------------------------
# Règles de réécriture d'URL :
#--------------------------------------------------

RewriteRule ^article-([0-9]+)-([0-9]+)-([a-z]*)$   /page/article.php?id=$1&rubrique=$2&toto=$3 [L]

 

voila, vous n’avez plus dans votre application php, qu’a réécrire vos urls de la nouvelle forme :

http://www.monsite.fr/page/article-10-20-maison

au lieu de :

http://www.monsite.fr/page/article.php?id=10&page=20&categorie=maison

ainsi quand vous appelerez cette URL : http://www.monsite.fr/page/article-10-20-maison le serveur automatiquement la transformeras en http://www.monsite.fr/page/article.php?id=10&page=20&categorie=maison et saura s’y retrouver.

il est toute fois possible de laisse les url’s écrites de manière normale mais d’appeler une fonction php en charge de les réécrire dans le code…

 

 

 

PHP / MySQL : sauvegarder et compresser une base de donnée SQL

Pour ceux qui souhaiteraient sauvegarder leur base de données dans un export sql compressé, voici le code à utiliser:


<?php
 system("mysqldump --host=votre_serveur_mysql --user=nom_de_votre_base --password=mot_de_passe    nom_de_votre_base > backup.sql");
system("gzip backup.sql");
 ?>

voila votre base est sauvegardée dans un export.sql zippé

HTML5up : des templates HTML5 Responsive gratuit (compatible : smartphone, tablette, et desktop)

Le responsive design, terme barbare qui design les templates qui s’adaptent aux résolutions des nouveau périphériques, tablette, smartphone etc…

Pour ceux qui souhaitent adapter leur site internet php à l’affichage sur mobile et tablette en utilisant le responsive design, ce site propose des examples de templates HTML5 et responsive gratuit.

vous trouverez les templates responsive design HTML5 ici

html5 responsive design template php

 

PHP et Mysql, optimiser les performances de son site internet avec PHP fast cache

Bien souvent sur nos sites internet, des requetes SQL superflues plombent les performances et la rapidité de l’application.

Pour résoudre ce problème et optimiser les performances  de rapidité d’affichage des pages, il peut être utile de mettre en cache certaines informations que l’on est susceptible de réutiliser, sans avoir besoins de relancer une requête SQL.

Pour cela il existe un très bon moyen qui se nomme PHPFastCache qui permet de mettre en cache certaine variable PHP.

logo php fastcache

php fast cache

PHP web services : comment créer un service web php avec soap

image creer web services php

Cet article est un petit pense bête pour expliquer simplement comment créer un service web. Nous allons donc voir comment retourner un tableau d’informations en php.

1 – telecharger la librairie NuSOAP

2 – Création de l’objet serveur et définition de l’objet à renvoyer dans la réponse, notre tableau


/**
* Coté serveur
*
*/
<?php
// on inclut la librairie que l'on a téléchargé
include('lib/nusoap.php');
//on crée l'objet server
$serveur = new soap_server
$serveur->wsdl->addComplexType(
'Contact',
'complexType',
'struct',
'all','',
array(
'nom' => array('name' => 'nom', 'type' => 'xsd:string'),
'prenom' => array('name' => 'prenom', 'type' => 'xsd:string'),
'web' => array('name' => 'web', 'type' => 'xsd:string'),
'tel' => array('name' => 'tel', 'type' => 'xsd:int'),
)
);

$serveur->wsdl->addComplexType(
'ContactArray',
'complexType',
'array','',
'SOAP-ENC:Array',array(),
array(
array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'tns:Contact[]')
),
'tns:Contact'
);

// on définit la méthode qui sera appelé par le client
$serveur->register('getContacts',
array(), //pas de paramètre en entré
array('Contact' => 'tns:ContactArray')
);

// on implémente la méthode

function getContacts() {
$result = array();
$req="SELECT * FROM `Contacts`";
$res=mysql_query($req);
while($obj=mysql_fetch_object($res)) {
$result[] = array( 'nom' => $obj->nom, 'prenom' => $obj->prenom,'email'=>$obj->email, 'tel'=>$obj->tel);
}
return $result;
}
?>

et l’appel coté client


<?php

/**

* Coté client

*

*/

require_once('lib/nusoap.php');

// url du fichier qui contient le code que l'on a définit juste avant

 $serverpath ='http://url-vers-le-fichier-php-du-web-service';

$client = new soapclient($serverpath);

// on appelle la fonction get client

$result = $client->call('getContacts');

// on affiche la requete

print($client->request);

?>

Pour cet article, j’ai complété cette source : www.jkraft.fr