最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PHP生成sitemap.xml地圖函數(shù)

 更新時(shí)間:2013年11月13日 10:52:29   作者:  
找到一個(gè)功能齊全,代碼清晰的PHP生成sitemap的類,大家可以參考一下

復(fù)制代碼 代碼如下:

<?php

/**
 *    網(wǎng)站地圖更新控制器
 *
 *    @author    Garbin
 *    @usage    none
 */
class SitemapApp extends FrontendApp
{
    function __construct()
    {
        $this->SitemapApp();
    }
    function SitemapApp()
    {
        parent::__construct();
        $this->_google_sitemmap_file = ROOT_PATH . '/data/google_sitemmap.xml';
    }

    function index()
    {
        if (!Conf::get('sitemap_enabled'))
        {
            return;
        }
        $from = empty($_GET['from']) ? 'google' : trim($_GET['from']);
        switch ($from)
        {
            case 'google':
                $this->_output_google_sitemap();
            break;
        }
    }

    /**
     *    輸出Google sitemap
     *
     *    @author    Garbin
     *    @return    void
     */
    function _output_google_sitemap()
    {
        header("Content-type: application/xml");
        echo $this->_get_google_sitemap();
    }

    /**
     *    獲取Google sitemap
     *
     *    @author    Garbin
     *    @return    string
     */
    function _get_google_sitemap()
    {
        $sitemap = "";
        if ($this->_google_sitemap_expired())
        {
            /* 已過(guò)期,重新生成 */

            /* 獲取有更新的項(xiàng)目 */
            $updated_items = $this->_get_updated_items($this->_get_google_sitemap_lastupdate());

            /* 重建sitemap */
            $sitemap = $this->_build_google_sitemap($updated_items);

            /* 寫入文件 */
            $this->_write_google_sitemap($sitemap);
        }
        else
        {
            /* 直接返回舊的sitemap */
            $sitemap = file_get_contents($this->_google_sitemmap_file);
        }

        return $sitemap;
    }

    /**
     *    判斷Google sitemap是否過(guò)期
     *
     *    @author    Garbin
     *    @return    boolean
     */
    function _google_sitemap_expired()
    {
        if (!is_file($this->_google_sitemmap_file))
        {
            return true;
        }
        $frequency = Conf::get('sitemap_frequency') * 3600;
        $filemtime = $this->_get_google_sitemap_lastupdate();

        return (time() >= $filemtime + $frequency);
    }

    /**
     *    獲取上次更新日期
     *
     *    @author    Garbin
     *    @return    int
     */
    function _get_google_sitemap_lastupdate()
    {
        return is_file($this->_google_sitemmap_file) ? filemtime($this->_google_sitemmap_file) : 0;
    }

    /**
     *    獲取已更新的項(xiàng)目
     *
     *    @author    Garbin
     *    @return    array
     */
    function _get_updated_items($timeline = 0)
    {
        $timeline && $timeline -= date('Z');
        $limit = 5000;
        $result = array();
        /* 更新的店鋪 */
        $model_store =& m('store');
        $updated_store = $model_store->find(array(
            'fields'    => 'store_id, add_time',
            'conditions' => "add_time >= {$timeline} AND state=" . STORE_OPEN,
            'limit'     => "0, {$limit}",
        ));

        if (!empty($updated_store))
        {
            foreach ($updated_store as $_store_id => $_v)
            {
                $result[] = array(
                    'url'       => SITE_URL . '/index.php?app=store&id=' . $_store_id,
                    'lastmod'   => date("Y-m-d", $_v['add_time']),
                    'changefreq'=> 'daily',
                    'priority'  => '1',
                );
            }
        }
        /* 更新的文章 */
        $model_article =& m('article');
        $updated_article = $model_article->find(array(
            'fields'    => 'article_id, add_time',
            'conditions'=> "add_time >= {$timeline} AND if_show=1",
            'limit'     => "0, {$limit}",
        ));
        if (!empty($updated_article))
        {
            foreach ($updated_article as $_article_id => $_v)
            {
                $result[] = array(
                    'url'       => SITE_URL . '/index.php?app=article&act=view&article_id=' . $_article_id,
                    'lastmod'   => date("Y-m-d", $_v['add_time']),
                    'changefreq'=> 'daily',
                    'priority'  => '0.8',
                );
            }
        }

        /* 更新的商品 */
        $model_goods =& m('goods');
        $updated_goods = $model_goods->find(array(
            'fields'        => 'goods_id, last_update',
            'conditions'    => "last_update >= {$timeline} AND if_show=1 AND closed=0",
            'limit'         => "0, {$limit}",
        ));
        if (!empty($updated_goods))
        {
            foreach ($updated_goods as $_goods_id => $_v)
            {
                $result[] = array(
                    'url'       => SITE_URL . '/index.php?app=goods&id=' . $_goods_id,
                    'lastmod'   => date("Y-m-d", $_v['last_update']),
                    'changefreq'=> 'daily',
                    'priority'  => '0.8',
                );
            }
        }

        return $result;
    }

    /**
     *    生成Google sitemap
     *
     *    @author    Garbin
     *    @param     array $items
     *    @return    string
     */
    function _build_google_sitemap($items)
    {
        $sitemap = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\r\n";
        $sitemap .= "    <url>\r\n        <loc>" . htmlentities(SITE_URL, ENT_QUOTES) . "</loc>\r\n        <lastmod>" . date('Y-m-d', gmtime()) . "</lastmod>\r\n        <changefreq>always</changefreq>\r\n        <priority>1</priority>\r\n    </url>";
        if (!empty($items))
        {
            foreach ($items as $item)
            {
                $sitemap .= "\r\n    <url>\r\n        <loc>" . htmlentities($item['url'], ENT_QUOTES) . "</loc>\r\n        <lastmod>{$item['lastmod']}</lastmod>\r\n        <changefreq>{$item['changefreq']}</changefreq>\r\n        <priority>{$item['priority']}</priority>\r\n    </url>";
            }
        }
        $sitemap .= "\r\n</urlset>";

        return $sitemap;
    }

    /**
     *    寫入Google sitemap文件
     *
     *    @author    Garbin
     *    @param     string $sitemap
     *    @return    void
     */
    function _write_google_sitemap($sitemap)
    {
        file_put_contents($this->_google_sitemmap_file, $sitemap);
    }
}

?>

相關(guān)文章

  • PHP格式化顯示時(shí)間date()函數(shù)案例講解

    PHP格式化顯示時(shí)間date()函數(shù)案例講解

    這篇文章主要介紹了PHP格式化顯示時(shí)間date()函數(shù)案例講解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • PHPMYADMIN導(dǎo)入數(shù)據(jù)最大為2M的解決方法

    PHPMYADMIN導(dǎo)入數(shù)據(jù)最大為2M的解決方法

    PHPMYADMIN還原數(shù)據(jù)庫(kù)的時(shí)候上傳的最大限制:2,048 KB,數(shù)據(jù)庫(kù)稍微大一些就無(wú)法處理,要么使用其他的備份還原工具如帝國(guó)備份王,要么就分卷導(dǎo)出,那么有沒(méi)有辦法還使用PHPMYADMIN來(lái)處理呢
    2012-04-04
  • PHP 中 DOMDocument保存xml時(shí)中文出現(xiàn)亂碼問(wèn)題的解決方案

    PHP 中 DOMDocument保存xml時(shí)中文出現(xiàn)亂碼問(wèn)題的解決方案

    這篇文章主要介紹了PHP 中 DOMDocument保存xml時(shí)中文出現(xiàn)亂碼問(wèn)題的解決方案,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-09-09
  • PHP基本語(yǔ)法總結(jié)

    PHP基本語(yǔ)法總結(jié)

    這篇文章主要介紹了PHP基本語(yǔ)法總結(jié),本文從PHP能做什么開始講解,對(duì)PHP的語(yǔ)法、注釋、變量、常量等內(nèi)容做了總結(jié),需要的朋友可以參考下
    2014-09-09
  • PHP 實(shí)例化類的一點(diǎn)摘記

    PHP 實(shí)例化類的一點(diǎn)摘記

    最近在編寫 Grace PHP5 Framework 中,我得到很多類的實(shí)例化的心得。Grace PHP5 Framework 是一個(gè)完全基于 MVC 架構(gòu)的框架,具有良好的擴(kuò)展性。它對(duì)于類的調(diào)用可以說(shuō)非常的靈活。
    2008-03-03
  • 利用PHP?POST臨時(shí)文件機(jī)制實(shí)現(xiàn)任意文件上傳的方法詳解

    利用PHP?POST臨時(shí)文件機(jī)制實(shí)現(xiàn)任意文件上傳的方法詳解

    這篇文章主要介紹了利用?PHP?POST?臨時(shí)文件機(jī)制實(shí)現(xiàn)任意文件上傳,同時(shí)該過(guò)程也會(huì)打斷 php 對(duì)臨時(shí)文件的處理,雖然最終仍會(huì)被刪除,但相較之前可以明顯看出臨時(shí)文件在磁盤的中存在的時(shí)間變長(zhǎng)了,需要的朋友可以參考下
    2022-04-04
  • LotusPhp筆記之:Cookie組件的使用詳解

    LotusPhp筆記之:Cookie組件的使用詳解

    Cookie最常見的操作無(wú)非是讀、寫、刪三個(gè)操作,當(dāng)然還要有安全性的操作,否則惡意查看修改 Cookie,那還了得
    2013-05-05
  • 搜索附近的人PHP實(shí)現(xiàn)代碼

    搜索附近的人PHP實(shí)現(xiàn)代碼

    這篇文章主要為大家詳細(xì)介紹了搜索附近的人PHP實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • 使用swoole擴(kuò)展php websocket示例

    使用swoole擴(kuò)展php websocket示例

    WebSocket規(guī)范的目標(biāo)是在瀏覽器中實(shí)現(xiàn)和服務(wù)器端雙向通信。雙向通信可以拓展瀏覽器上的應(yīng)用類型,如果你想要用PHP來(lái)寫websocket應(yīng)用,那swoole_framework一定是最好的選擇,需要的朋友可以參考下
    2014-02-02
  • PHP實(shí)現(xiàn)簡(jiǎn)易圖形計(jì)算器

    PHP實(shí)現(xiàn)簡(jiǎn)易圖形計(jì)算器

    這篇文章主要為大家詳細(xì)介紹了PHP實(shí)現(xiàn)簡(jiǎn)易圖形計(jì)算器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-08-08

最新評(píng)論

平武县| 西华县| 潞西市| 波密县| 四川省| 福海县| 绍兴县| 靖远县| 奈曼旗| 平泉县| 汕尾市| 舟曲县| 民和| 宁城县| 宝丰县| 灵川县| 油尖旺区| 淮北市| 古田县| 云和县| 法库县| 璧山县| 岳西县| 团风县| 阜平县| 托克逊县| 永登县| 普洱| 禹城市| 高邑县| 东方市| 且末县| 滁州市| 五家渠市| 凉城县| 池州市| 万山特区| 甘孜| 抚宁县| 若羌县| 仙桃市|