• <em id="6vhwh"><rt id="6vhwh"></rt></em>

    <style id="6vhwh"></style>

    <style id="6vhwh"></style>
    1. <style id="6vhwh"></style>
        <sub id="6vhwh"><p id="6vhwh"></p></sub>
        <p id="6vhwh"></p>
          1. 国产亚洲欧洲av综合一区二区三区 ,色爱综合另类图片av,亚洲av免费成人在线,久久热在线视频精品视频,成在人线av无码免费,国产精品一区二区久久毛片,亚洲精品成人片在线观看精品字幕 ,久久亚洲精品成人av秋霞

            extension

            更新時間:2023-03-01 09:15:28 閱讀: 評論:0

            ThinkPHP 框架,redis不能用,extension_loaded('redis') 返回fal

            $redis = new \Redis();
            $redis->connect('127.0.0.1',6379);

            符號'\'不能省

            php extension 哪些

            php extension就是php的擴展,這個擴展是有很多的,如:

            HTTP extension for PHP旨在為PHP應用提供一個方便而強大的功能擴展 。它簡化了處理的HTTP網址,日期,重定向,HTTP 頭信息,消息,客戶的首選語言和字符集,以及提供便捷的數據高速緩存和恢復的方法。它提供了強大的功能,如果和 CURL 一起編譯的話將提供更強大的請求處理功能。PHP5或者更新版本提供并行請求處理;

            extension_loaded—檢查一個擴展是否已經加載,說明extension_loaded()使用內置擴展名稱來測試一個擴展是否有效。 大多數內置擴展名稱是小寫的,但也有擴展使用大寫字符。 在 PHP 5 之前,此函數以大小寫敏感的方式對比名稱;

            這里我給你看下小部分的截圖,如果你有興趣可以自行去下載一個php的安裝包來看:


            PHP可否調用動態鏈接庫

            當php.ini中的enable_dl選項為on時,可以使用下面這個函數來加載dll文件:
            int dl ( string library ),但是當系統處于安全模式時,即使enable_dl為on,也無法使用.

            <?php
            // Example loading an extension bad on OS
            if (!extension_loaded('sqlite')) {
            if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN')) {
            dl('php_sqlite.dll');
            } el {
            dl('sqlite.so');
            }
            }

            // Or, the PHP_SHLIB_SUFFIX constant is available as of PHP 4.3.0
            if (!extension_loaded('sqlite')) {
            $prefix = (PHP_SHLIB_SUFFIX == 'dll') ? 'php_' : '';
            dl($prefix . 'sqlite.' . PHP_SHLIB_SUFFIX);
            }
            ?>

            這屬于動態加載dll文件,還有一種方法就是,將你的dll文件放到php的ext目錄下,然后在你的php.ini文件里面找到一大堆:extension=php_xxxx.dll那里,找個空行,按照這個寫法寫上去,注意前面不要有";"號.重啟apache后,就可以調用里面的東西了.

            PHP加載IMAP模塊問題

            extension_loaded("imap");
            用get_extension_funcs("imap"); 函數進行測試,若返回boolean值為空,說明php_imap.dll文件沒有加載進去,

            PHP的gzip壓縮方法 ,為什么壓縮了反而更慢了。尤其瀏覽器緩存js以后

            壓縮網頁以后,是減少網絡傳輸時間、增加服務器和瀏覽器的CPU占用時間,總時間的影響要區別情況,如果你用高級電腦、慢速網絡,那么肯定是壓縮了的好,如果是高速網絡、低配置電腦,那么肯定是不壓縮的好。

            是否采用壓縮,一般是網站管理員決定,網站管理員看服務器的瓶頸是在流量上,還是CPU、內存占用上,根據情況決定是否壓縮,以及壓縮的程度。

            另外,測試的網頁大小可能不準確,許多網絡工具是顯示還原后的大小。

            如何緩存一個block

            magento是基于zend framework的,所以cache的使用基本也繼承了他的一些特性。我們要知道緩存中有幾個重要的概念:
            數據本身;數據的標識;緩存生命期;緩存操作接口;
            Zend_Cache 的使用比較簡單, 它可以把數據保存到 File, Memcache, SQLite 等介質(稱為后端, Backend)中. 還有前端(Frontend), 主要用來對要緩存的數據進行轉換, 如序列化.
            Zend Framework 后端主要有
            apc (Zend_Cache_Backend_Apc),
            files (Zend_Cache_Backend_File),
            memcached (Zend_Cache_Backend_Memcached)
            and some more..

            Magento 增加了幾種:
            databa (Varien_Cache_Backend_Databa)
            eaccelarator (Varien_Cache_Backend_Eaccelarator).

            為了更深入的理解magento cache,本文就以緩存某個block為例,分析下他的工作流程和原理。在magento中,所有的block都是繼承自Mage_Core_Block_Abstract,當輸出某個block到頁面時,會調用到這個類的toHtml方法,該方法中有如下code片段:

            [php] view plaincopy
            $html = $this->_loadCache();//加載緩存,假設為第一次加載,還沒有被緩存過,進入if代碼段
            if ($html === fal) {
            $translate = Mage::getSingleton('core/translate');
            /** @var $translate Mage_Core_Model_Translate */
            if ($this->hasData('translate_inline')) {
            $translate->tTranslateInline($this->getData('translate_inline'));
            }

            $this->_beforeToHtml();
            $html = $this->_toHtml();
            $this->_saveCache($html);//這句代碼很簡單,但卻在內部完成了大量的工作,下面進入它內部深入分析

            if ($this->hasData('translate_inline')) {
            $translate->tTranslateInline(true);
            }
            }
            繼續看本類中的function _saveCache($data)

            [php] view plaincopy
            function _saveCache($data)
            /**
            * Save block content to cache storage
            *
            * @param string $data
            * @return Mage_Core_Block_Abstract
            */
            protected function _saveCache($data)
            {
            if (is_null($this->getCacheLifetime()) || !Mage::app()->uCache(lf::CACHE_GROUP)) {
            return fal;
            }
            $cacheKey = $this->getCacheKey();
            /** @var $ssion Mage_Core_Model_Session */
            $ssion = Mage::getSingleton('core/ssion');
            $data = str_replace(
            $ssion->getSessionIdQueryParam() . '=' . $ssion->getEncryptedSessionId(),
            $this->_getSidPlaceholder($cacheKey),
            $data
            );

            //可以肯定進入了Mage_Core_Model_App 的function saveCache
            Mage::app()->saveCache($data, $cacheKey, $this->getCacheTags(), $this->getCacheLifetime());
            return $this;
            }
            打開Mage_Core_Model_App 的function saveCache

            [php] view plaincopy
            /**
            * Saving cache data
            *
            * @param mixed $data
            * @param string $id
            * @param array $tags
            * @return Mage_Core_Model_App
            */
            public function saveCache($data, $id, $tags=array(), $lifeTime=fal)
            {
            $this->_cache->save($data, $id, $tags, $lifeTime);
            return $this;
            }
            可以看到$this->_cache這個對象調用了save,繼續看$this->_cache到底屬于哪個類的實例,在本類中找到protected function _initCache(),code如下:

            [php] view plaincopy
            /**
            * Initialize application cache instance
            *
            * @return Mage_Core_Model_App
            */
            protected function _initCache()
            {
            $this->_isCacheLocked = true;
            $options = $this->_config->getNode('global/cache');
            if ($options) {
            $options = $options->asArray();
            } el {
            $options = array();
            }

            //實例化Mage_Core_Model_Cache,并傳入參數$options
            $this->_cache = Mage::getModel('core/cache', $options);
            $this->_isCacheLocked = fal;
            return $this;
            }
            上面Mage::getModel('core/cache', $options)的$options是app/etc/local.xml中節點global/cache下的配置,假設ocal.xml如下:

            [html] view plaincopy
            <config>
            <global>
            <cache>
            <backend>apc</backend>
            <slow_backend>File</slow_backend>
            <auto_refresh_fast_cache>1</auto_refresh_fast_cache>
            <prefix>MYSHOP_</prefix>
            <default_priority>10</default_priority>
            </cache>
            </global>
            </config>
            能看到$this->_cache是實例化了實例化Mage_Core_Model_Cache,所以Mage_Core_Model_App 中的$this->_cache->save($data, $id, $tags, $lifeTime)即調用的Mage_Core_Model_Cache的function save。進入Mage_Core_Model_Cache的save:

            [php] view plaincopy
            /**
            * Save data
            *
            * @param string $data
            * @param string $id
            * @param array $tags
            * @param int $lifeTime
            * @return bool
            */
            public function save($data, $id, $tags=array(), $lifeTime=null)
            {
            /**
            * Add global magento cache tag to all cached data exclude config cache
            */
            if (!in_array(Mage_Core_Model_Config::CACHE_TAG, $tags)) {
            $tags[] = Mage_Core_Model_App::CACHE_TAG;
            }
            return $this->_frontend->save((string)$data, $this->_id($id), $this->_tags($tags), $lifeTime);
            }
            可以看到$this->_frontend->save(...)這句,那么這里的_frontend是什么呢?繼續看此類的構造函數(只列出部分code):

            [php] view plaincopy
            $backend = $this->_getBackendOptions($options);
            $frontend = $this->_getFrontendOptions($options);

            $this->_frontend =Zend_Cache::factory('Varien_Cache_Core', $backend['type'], $frontend, $backend['options'],true, true, true);
            沒錯_frontend就是類Varien_Cache_Core的一個實例,因為Varien_Cache_Core是繼承自Zend_Cache_Core,所以這里_frontend實際上實例化的是Zend_Cache_Core,即調用的是Zend_Cache_Core的save,再繼續分析,打開Zend_Cache_Core,找到function save它里面包含了如下代碼片段:

            [php] view plaincopy
            if (($this->_extendedBackend) && ($this->_backendCapabilities['priority'])) {
            $result = $this->_backend->save($data, $id, $tags, $specificLifetime, $priority);
            } el {
            $result = $this->_backend->save($data, $id, $tags, $specificLifetime);
            }
            可以看到這里實際上又變成了_backend的來調用的save,(開頭我們已經說了backend是用來保存數據的),那么這里_backend到底是哪個backend(file,db,apc...)呢?繼續分析,在這個類里面有一個方法tBackend:

            [php] view plaincopy
            /**
            * Set the backend
            *
            * @param Zend_Cache_Backend $backendObject
            * @throws Zend_Cache_Exception
            * @return void
            */
            public function tBackend(Zend_Cache_Backend $backendObject)
            {
            $this->_backend= $backendObject;
            // some options (listed in $_directivesList) have to be given
            // to the backend too (even if they are not "backend specific")
            $directives = array();
            foreach (Zend_Cache_Core::$_directivesList as $directive) {
            $directives[$directive] = $this->_options[$directive];
            }
            $this->_backend->tDirectives($directives);
            if (in_array('Zend_Cache_Backend_ExtendedInterface', class_implements($this->_backend))) {
            $this->_extendedBackend = true;
            $this->_backendCapabilities = $this->_backend->getCapabilities();
            }

            }
            里面有$this->_backend= $backendObject這句,$backendObject是傳入的參數,那么是何時調用的tBackend呢?實際上,這個方法是在上邊Mage_Core_Model_Cache里的save方法中調用$this->_frontend = Zend_Cache::factory('Varien_Cache_Core', $backend['type'], $frontend, $backend['options'], true, true, true);這句的的時候,已經被調用了,可以打開Zend_Cache的factory 方法查看,會發現有一句$frontendObject->tBackend($backendObject);參數$backendObject是factory傳入的參數$backend['type'],$backend['type']到底是什么呢,我們在Mage_Core_Model_Cache的構造函數中看到$backend=$this->_getBackendOptions($options)這句,所以$backend是在本類的_getBackendOptions中被設置的,找到_getBackendOptions,code如下:

            [php] view plaincopy
            /**
            * Get cache backend options. Result array contain backend type ('type' key) and backend options ('options')
            *
            * @param array $cacheOptions
            * @return array
            */
            protected function _getBackendOptions(array $cacheOptions)
            {
            $enable2levels = fal;
            $type = ist($cacheOptions['backend']) ? $cacheOptions['backend'] : $this->_defaultBackend;
            if (ist($cacheOptions['backend_options']) && is_array($cacheOptions['backend_options'])) {
            $options = $cacheOptions['backend_options'];
            } el {
            $options = array();
            }

            $backendType = fal;
            switch (strtolower($type)) {
            ca 'sqlite':
            if (extension_loaded('sqlite') && ist($options['cache_db_complete_path'])) {
            $backendType = 'Sqlite';
            }
            break;
            ca 'memcached':
            if (extension_loaded('memcache')) {
            if (ist($cacheOptions['memcached'])) {
            $options = $cacheOptions['memcached'];
            }
            $enable2levels = true;
            $backendType = 'Memcached';
            }
            break;
            ca 'apc':
            if (extension_loaded('apc') && ini_get('apc.enabled')) {
            $enable2levels = true;
            $backendType = 'Apc';
            }
            break;
            ca 'xcache':
            if (extension_loaded('xcache')) {
            $enable2levels = true;
            $backendType = 'Xcache';
            }
            break;
            ca 'eaccelerator':
            ca 'varien_cache_backend_eaccelerator':
            if (extension_loaded('eaccelerator') && ini_get('eaccelerator.enable')) {
            $enable2levels = true;
            $backendType = 'Varien_Cache_Backend_Eaccelerator';
            }
            break;
            ca 'databa':
            $backendType = 'Varien_Cache_Backend_Databa';
            $options = $this->getDbAdapterOptions();
            break;
            default:
            if ($type != $this->_defaultBackend) {
            try {
            if (class_exists($type, true)) {
            $implements = class_implements($type, true);
            if (in_array('Zend_Cache_Backend_Interface', $implements)) {
            $backendType = $type;
            }
            }
            } catch (Exception $e) {
            }
            }
            }

            if (!$backendType) {
            $backendType = $this->_defaultBackend;
            foreach ($this->_defaultBackendOptions as $option => $value) {
            if (!array_key_exists($option, $options)) {
            $options[$option] = $value;
            }
            }
            }

            $backendOptions = array('type' => $backendType, 'options' => $options);
            if ($enable2levels) {
            $backendOptions = $this->_getTwoLevelsBackendOptions($backendOptions, $cacheOptions);
            }
            return $backendOptions;
            }

            本文發布于:2023-02-28 19:46:00,感謝您對本站的認可!

            本文鏈接:http://m.newhan.cn/zhishi/a/167763332870396.html

            版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。

            本文word下載地址:extension.doc

            本文 PDF 下載地址:extension.pdf

            標簽:extension
            相關文章
            留言與評論(共有 0 條評論)
               
            驗證碼:
            Copyright ?2019-2022 Comsenz Inc.Powered by ? 實用文體寫作網旗下知識大全大全欄目是一個全百科類寶庫! 優秀范文|法律文書|專利查詢|
            主站蜘蛛池模板: 亚洲情色av一区二区| 午夜毛片精彩毛片| 东京热加勒比无码少妇| 久久99久国产精品66| 日韩中文字幕精品人妻| 亚洲av二区国产精品| 真人免费一级毛片一区二区| av老司机亚洲精品天堂| 九色国产精品一区二区久久| 中国农村真卖bbwbbw| 在线中文一区字幕对白| 毛色毛片免费观看| 农村妇女野外一区二区视频| 日本深夜福利在线观看| 亚洲国产欧美在线看片一国产| 亚洲成人av日韩在线| 国产精品亚洲国际在线看| 国产成人不卡一区二区| 成人国产精品一区二区免费麻豆| 美女禁区a级全片免费观看| jizzjizz欧美69巨大| 日本亚洲一区二区精品久久| 色综合AV综合无码综合网站| 乱60一70归性欧老妇| 无码一区二区波多野结衣播放搜索| 亚洲男人第一av天堂| 亚洲欧洲日产国无高清码图片| 911国产自产精选| 国产亚洲精品中文字幕| 久久精品色妇熟女丰满| 自拍偷在线精品自拍偷免费| 中文字幕av无码免费一区| 久久亚洲女同第一区综合| 精品无码久久久久久久久久| 丝袜美腿亚洲综合在线观看视频 | 岛国岛国免费v片在线观看| 中文字幕久久精品人妻| 亚洲精品揄拍自拍首页一| 国产极品视频一区二区三区| 国产又黄又硬又粗| 欧美日韩v|