PHP微博客应用中的URL缩短类
PHP微博客应用中的URL缩短类
在Unix机上的PHP脚本 .class.php可以复用 下面有4个方法用来缩短 加密 解密 DB中的原始URL 并缩短他
结合Apache的rewrite模块进行路由
如传入一个http://index.php/catagory/python-cookbook_3tdedition.php
重写为..index.php/123/512.html
在Apache模块中可以定义 catagory请求为123路由地址
因为是用的单例模式的CONN 处理并发请求 测试的时候MySQL 并发命中会很低
#!usr/local/bin/php <?php /** * 使用单例模式 4个方法 编码 解码 测试 压缩URL * SQL表urls只有2个字 一个自增长的ID 一个varchar的url字符串 * 512增加为了防止传入的url太短 * */ class UrlShortener { const OFFSET = 512; private $base; private $characterMap; public function __construct(){ //初始化私有变量 $this->characterMap = array( '1','2','3','4','5','6','7','8','9', 'z','x','c','b','v', 'f','g','h','j','k','L','m','n', 'q','w','r','t','y','p','s','d' ); $this->base = sizeof($this->characterMap); } public static function getInstance(){ static $instance = null; if($instance === null){ $instance = new UrlShortener(); } return $instance; } public function shorten($conn,$url){ $escapedUrl = mysql_escape_string($url); $res = mysql_query("select 'id' from urls where 'url' like $escapedUrl",$conn); $row = mysql_fetch_row($res); mysql_free_result($res); //如果有 就进行编码 然后重写进入数据库 if($row) return $this->encode($row[0]+self::OFFSET); //如果没有 就先编码后插入 $res = mysql_query(" insert into 'urls'('url') values('$escapedUrl') ",$conn); return $this->encode(mysql_insert_id($conn)+self::OFFSET); } public function encode($val){ #递归对每一个URL中的字符进行解码 #@return 解码以后的字符串Url $val += 512; if($val < $this->base){ return $this->characterMap[ $val ]; }else{ return $this->encode(floor( $val/$this->base)). $this->characterMap[ $val % $this->base]; } } public function decode($val){ $decodeMap = array_flip($this->characterMap);#翻转字典 $parts = array_reverse(str_split( $val )); $index = 0; $i = 0; foreach($parts as $part){ $index += $decodeMap[$part] * pow($this->base,$i++); } return $index-512; } public function expand($conn,$index){ $id = $this->decode($index)-self::OFFSET; $res = mysql_query(' select "url" from "urls" where 'id' = $id ',$conn); $value = (($row = mysql_fetch_row( $res)))?$row[0]:null; mysql_free_result($res); return $value; } }#end class ?>
2. [文件] test4Url.php
#!/usr/local/bin/php <?php //测试一下上面的class include ( "UrlShortener.class.php" ) $shortener = UrlShortener::getInstance(); set_time_limit(0); $stdin = fopen("php://stdin",'r'); while(1){ $index = trim(fgets($stdin)); return $shortener->expand(getDb(),$index).'\n'; } function getDb(){ static $db = null; if(!$db||!mysql_ping($db){ $db = mysql_connect('localhost','user','password'); mysql_select_db("test"); } return $db; } ?>
以上就是PHP微博客应用中的URL缩短类 的内容,更多相关内容请关注PHP中文网(www.php.cn)!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Dans ce chapitre, nous comprendrons les variables d'environnement, la configuration générale, la configuration de la base de données et la configuration de la messagerie dans CakePHP.

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

Pour travailler avec la date et l'heure dans cakephp4, nous allons utiliser la classe FrozenTime disponible.

Pour travailler sur le téléchargement de fichiers, nous allons utiliser l'assistant de formulaire. Voici un exemple de téléchargement de fichiers.

Dans ce chapitre, nous allons apprendre les sujets suivants liés au routage ?

CakePHP est un framework open source pour PHP. Il vise à faciliter grandement le développement, le déploiement et la maintenance d'applications. CakePHP est basé sur une architecture de type MVC à la fois puissante et facile à appréhender. Modèles, vues et contrôleurs gu

Le validateur peut être créé en ajoutant les deux lignes suivantes dans le contrôleur.

Visual Studio Code, également connu sous le nom de VS Code, est un éditeur de code source gratuit – ou environnement de développement intégré (IDE) – disponible pour tous les principaux systèmes d'exploitation. Avec une large collection d'extensions pour de nombreux langages de programmation, VS Code peut être c
