Table des matières
回复讨论(解决方案)
Maison développement back-end tutoriel php 求高效的缓存类,每秒访问1W次页面 服务器扛不住

求高效的缓存类,每秒访问1W次页面 服务器扛不住

Jun 23, 2016 pm 02:12 PM

求高效的缓存类,每秒访问1W次页面,每个页面都不一样,可能是百万级别的,,想试用缓存处理, 服务器扛不住啊,找了一个缓存类,貌似 没解决负载问题。!!!





<?php/** * auto_cache.php 实现智能的自动缓存。 * 使用办法极其简单: * 在需要实现缓存功能的页面 require 'auto_cache.php'; 就ok了 * @author rains31@gmail.com *///存放缓存的根目录,最好是放到/tmp目录,尤其是虚拟主机用户,因为/tmp目录不占自己的主页空间啊:)define('CACHE_ROOT', dirname(__FILE__).'/cachess');//缓存文件的生命期,单位秒,86400秒是一天define('CACHE_LIFE', 1864000);//缓存文件的扩展名,千万别用 .php .asp .jsp .pl 等等define('CACHE_SUFFIX','.html');//缓存文件名$file_name  = md5($_SERVER["HTTP_REFERER"]).CACHE_SUFFIX;//缓存目录,根据md5的前两位把缓存文件分散开。避免文件过多。如果有必要,可以用第三四位为名,再加一层目录。//256个目录每个目录1000个文件的话,就是25万个页面。两层目录的话就是65536*1000=六千五百万。//不要让单个目录多于1000,以免影响性能。$cache_dir  = CACHE_ROOT.'/'.$_SERVER['SERVER_NAME'];//缓存文件$cache_file = $cache_dir.'/'.substr($file_name,4);//GET方式请求才缓存,POST之后一般都希望看到最新的结果if($_SERVER['REQUEST_METHOD']=='GET'){    //如果缓存文件存在,并且没有过期,就把它读出来。    if(file_exists($cache_file) && time()-filemtime($cache_file)<CACHE_LIFE)    {        $fp = fopen($cache_file,'rb');        fpassthru($fp);        fclose($fp);        exit;    }    elseif(!file_exists($cache_dir))    {        if(!file_exists(CACHE_ROOT))        {            mkdir(CACHE_ROOT,0777);            chmod(CACHE_ROOT,0777);        }        mkdir($cache_dir,0777);        chmod($cache_dir,0777);    }    //回调函数,当程序结束时自动调用此函数    function auto_cache($contents)    {        global $cache_file;        $fp = fopen($cache_file,'wb');        fwrite($fp,$contents);        fclose($fp);        chmod($cache_file,0777);        //生成新缓存的同时,自动删除所有的老缓存。以节约空间。        clean_old_cache();        return $contents;    }    function clean_old_cache()    {        chdir(CACHE_ROOT);        foreach (glob("*/*".CACHE_SUFFIX) as $file)        {           if(time()-filemtime($file)>CACHE_LIFE)           {               unlink($file);           }        }    }    //回调函数 auto_cache    ob_start('auto_cache');}else{    //不是GET的请求就删除缓存文件。    if(file_exists($cache_file))unlink($cache_file);}?> 
Copier après la connexion




大神帮我看看!!!!!!


回复讨论(解决方案)

这么高的吞吐量,用文件缓存是不可能的

那怎么缓存?

这么高的吞吐量,用文件缓存是不可能的
那怎么办?????

当然是换服务器,你的量都超门户站了。

不是有基于内存的缓存软件和数据库吗?
你可以根据你的硬件配置和操作系统选一款

不是有基于内存的缓存软件和数据库吗?
你可以根据你的硬件配置和操作系统选一款

呵呵其实我说的夸张了些,,,没有访问那么多,,就是 发现 访问多了之后 打开速度很慢,,
而且cpu 占用很多,,删除缓存后, 貌似好一些,,,请高手看看, 是否是我的缓存写的有些问题。。

不是有基于内存的缓存软件和数据库吗?
你可以根据你的硬件配置和操作系统选一款

大概高峰期,每秒访问20次吧,一共30个网站,这样 就有60次

先优化下代码和SQL吧,然后是文件分离、缓存,基本可以解决大部分的高并发,如果还不行说明你的量不是一般的技术上能解决的,看看yahoo、google怎么做的吧。

大概高峰期,每秒访问20次吧,一共30个网站,这样 就有60次 

影响网站访问速度的因素很多,比如数据库压力,服务器压力,带宽压力等,如果是你标题说的每秒万次PV,那我前面说的随便哪个都不是一台服务器能承受的,你必须做服务器集群了。如果是你后面说每秒20次,以我经验数据库和服务器都无压力,只有带宽可能在这种访问量下造成瓶颈。你算下你一个页面所有资源的总大小乘以20是否超出你的带宽。

影响网站访问速度的因素很多,比如数据库压力,服务器压力,带宽压力等,如果是你标题说的每秒万次PV,那我前面说的随便哪个都不是一台服务器能承受的,你必须做服务器集群了。如果是你后面说每秒20次,以我经验数据库和服务器都无压力,只有带宽可能在这种访问量下造成瓶颈。你算下你一个页面所有资源的总大小乘以20是否超出你的带宽。

目前发现 是缓存文件数量过大, 导致每次访问调用缓存文件,占用资源,,

希望高手 解答,重金相谢!!


影响网站访问速度的因素很多,比如数据库压力,服务器压力,带宽压力等,如果是你标题说的每秒万次PV,那我前面说的随便哪个都不是一台服务器能承受的,你必须做服务器集群了。如果是你后面说每秒20次,以我经验数据库和服务器都无压力,只有带宽可能在这种访问量下造成瓶颈。你算下你一个页面所有资源的总大小乘以20是否超出你的带宽。

目前发现 是缓存文件数量过大, 导致每次访问调用缓存文件,占用资源,,

希望高手 解答,重金相谢!!
freemaker 搞成静态的网页

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

11 meilleurs scripts de raccourcissement d'URL PHP (gratuit et premium) 11 meilleurs scripts de raccourcissement d'URL PHP (gratuit et premium) Mar 03, 2025 am 10:49 AM

Les longues URL, souvent encombrées de mots clés et de paramètres de suivi, peuvent dissuader les visiteurs. Un script de raccourcissement d'URL offre une solution, créant des liens concis idéaux pour les médias sociaux et d'autres plateformes. Ces scripts sont utiles pour les sites Web individuels

Introduction à l'API Instagram Introduction à l'API Instagram Mar 02, 2025 am 09:32 AM

À la suite de son acquisition de haut niveau par Facebook en 2012, Instagram a adopté deux ensembles d'API pour une utilisation tierce. Ce sont l'API graphique Instagram et l'API d'affichage de base Instagram. En tant que développeur créant une application qui nécessite des informations à partir d'un

Travailler avec les données de session Flash dans Laravel Travailler avec les données de session Flash dans Laravel Mar 12, 2025 pm 05:08 PM

Laravel simplifie la gestion des données de session temporaires à l'aide de ses méthodes de flash intuitives. Ceci est parfait pour afficher de brefs messages, alertes ou notifications dans votre application. Les données ne persistent que pour la demande ultérieure par défaut: $ demande-

Construisez une application React avec un Laravel Back End: Partie 2, React Construisez une application React avec un Laravel Back End: Partie 2, React Mar 04, 2025 am 09:33 AM

Il s'agit de la deuxième et dernière partie de la série sur la construction d'une application React avec un back-end Laravel. Dans la première partie de la série, nous avons créé une API RESTful utilisant Laravel pour une application de liste de base sur le produit. Dans ce tutoriel, nous serons Dev

Misque de réponse HTTP simplifié dans les tests Laravel Misque de réponse HTTP simplifié dans les tests Laravel Mar 12, 2025 pm 05:09 PM

Laravel fournit une syntaxe de simulation de réponse HTTP concise, simplifiant les tests d'interaction HTTP. Cette approche réduit considérablement la redondance du code tout en rendant votre simulation de test plus intuitive. L'implémentation de base fournit une variété de raccourcis de type de réponse: Utiliser illuminate \ support \ faades \ http; Http :: faux ([[ 'google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

Curl dans PHP: Comment utiliser l'extension PHP Curl dans les API REST Curl dans PHP: Comment utiliser l'extension PHP Curl dans les API REST Mar 14, 2025 am 11:42 AM

L'extension PHP Client URL (CURL) est un outil puissant pour les développeurs, permettant une interaction transparente avec des serveurs distants et des API REST. En tirant parti de Libcurl, une bibliothèque de transfert de fichiers multi-protocol très respectée, PHP Curl facilite Efficient Execu

12 meilleurs scripts de chat PHP sur Codecanyon 12 meilleurs scripts de chat PHP sur Codecanyon Mar 13, 2025 pm 12:08 PM

Voulez-vous fournir des solutions instantanées en temps réel aux problèmes les plus pressants de vos clients? Le chat en direct vous permet d'avoir des conversations en temps réel avec les clients et de résoudre leurs problèmes instantanément. Il vous permet de fournir un service plus rapide à votre personnalité

Annonce de l'enquête sur la situation en 2025 PHP Annonce de l'enquête sur la situation en 2025 PHP Mar 03, 2025 pm 04:20 PM

L'enquête sur le paysage PHP 2025 étudie les tendances actuelles de développement du PHP. Il explore l'utilisation du cadre, les méthodes de déploiement et les défis, visant à fournir des informations aux développeurs et aux entreprises. L'enquête prévoit la croissance de la PHP moderne versio

See all articles