当前位置: 首页>>代码示例>>PHP>>正文


PHP driver_interface::sql_close方法代码示例

本文整理汇总了PHP中phpbb\db\driver\driver_interface::sql_close方法的典型用法代码示例。如果您正苦于以下问题:PHP driver_interface::sql_close方法的具体用法?PHP driver_interface::sql_close怎么用?PHP driver_interface::sql_close使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在phpbb\db\driver\driver_interface的用法示例。


在下文中一共展示了driver_interface::sql_close方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: top_count

    public function top_count($top_id, $action)
    {
        /* GIF изображение */
        header('Cache-Control: public');
        header("Content-type: image/gif");
        $error = false;
        $user_ip = $this->ip();
        /* Выводим данные сайта */
        $sql_array = array('SELECT' => 'r.top_id, r.top_online, r.top_hits, r.top_hosts, r.top_hits_all, r.top_hosts_all, r.top_icon_big, r.top_icon_small', 'FROM' => array(RATING_TABLE => 'r'));
        $sql_array['SELECT'] .= ', hi.top_ip';
        $sql_array['LEFT_JOIN'][] = array('FROM' => array(RATING_HITS_TABLE => 'hi'), 'ON' => 'r.top_id = hi.top_id AND `top_ip` = "' . $user_ip . '"');
        $sql_array['SELECT'] .= ', o.top_time';
        $sql_array['LEFT_JOIN'][] = array('FROM' => array(RATING_ONLINE_TABLE => 'o'), 'ON' => 'r.top_id = o.top_id AND o.top_ip = "' . $user_ip . '"');
        $sql_array['WHERE'] = "r.top_id = " . (int) $top_id;
        $sql = $this->db->sql_build_query('SELECT', $sql_array);
        $result = $this->db->sql_query($sql);
        $row = $this->db->sql_fetchrow($result);
        $this->db->sql_freeresult($result);
        /* Ошибка или бот поисковой */
        if (!$row['top_id'] && !$this->user->data['is_bot']) {
            $error = true;
        }
        /* Не будем счиать ошибки */
        if (!$error) {
            $sql_upd = array();
            $ip_prov_id = 0;
            /* Пока cron не сделает сброс, ни каких подсчётов. */
            if ($this->config['top_rating_last_gc'] > time() - $this->config['top_rating_gc']) {
                $sql = 'SELECT ip_prov_id FROM ' . RATING_IP_TABLE . " WHERE INET_ATON('" . $user_ip . "') BETWEEN `ip_start` AND `ip_finish`";
                $result = $this->db->sql_query($sql);
                if ($iprow = $this->db->sql_fetchrow($result)) {
                    $ip_prov_id = $iprow['ip_prov_id'];
                }
                $this->db->sql_freeresult($result);
                /* Если нет ip пользователя в базе, значит нужно его создать и подсчитать хосты */
                if ($row['top_ip'] != $user_ip) {
                    if ($row['top_hits'] > $row['top_hosts'] + $row['top_hosts']) {
                        $sql = 'INSERT INTO ' . RATING_HITS_TABLE . " SET\n\t\t\t\t\t\t\t`top_id`\t\t= " . $row['top_id'] . ",\n\t\t\t\t\t\t\t`top_time`\t\t= '" . time() . "',\n\t\t\t\t\t\t\t`top_ip`\t\t= '" . $user_ip . "',\n\t\t\t\t\t\t\t`top_device`\t= '" . (string) $this->browser() . "',\n\t\t\t\t\t\t\t`top_prov_id`\t= " . $ip_prov_id . ",\n\t\t\t\t\t\t\t`top_count`\t\t= 1";
                        $this->db->sql_query($sql);
                        $sql_upd += array('top_hosts' => $row['top_hosts'] + 1, 'top_hosts_all' => $row['top_hosts_all'] + 1);
                    }
                } else {
                    /* Иначе просто обновим количество визитов пользователя */
                    $sql = 'UPDATE ' . RATING_HITS_TABLE . ' SET `top_time` = "' . time() . '", `top_count` = (`top_count` + 1)
						WHERE top_id = ' . $row['top_id'] . '
						AND top_ip = "' . $row['top_ip'] . '"';
                    $this->db->sql_query($sql);
                }
                /* Общее число и количество визитов */
                if ($user_ip) {
                    $sql_upd += array('top_hits' => $row['top_hits'] + 1, 'top_hits_all' => $row['top_hits_all'] + 1);
                }
                /* Время онлайн, индивидуально для каждого пользователя */
                if (!$row['top_time']) {
                    $sql = 'INSERT INTO ' . RATING_ONLINE_TABLE . " SET\n\t\t\t\t\t\t`top_id`\t\t= " . $row['top_id'] . ",\n\t\t\t\t\t\t`top_time`\t\t= '" . time() . "',\n\t\t\t\t\t\t`top_ip`\t\t= '" . $user_ip . "',\n\t\t\t\t\t\t`top_device`\t= '" . (string) $this->browser() . "',\n\t\t\t\t\t\t`top_prov_id`\t= " . $ip_prov_id;
                    $this->db->sql_query($sql);
                    $sql_upd += array('top_online' => $row['top_online'] + 1);
                } else {
                    $this->db->sql_query('DELETE FROM ' . RATING_ONLINE_TABLE . ' WHERE top_id = ' . $row['top_id'] . ' AND top_time < ' . (time() - 360));
                    $sql = 'SELECT COUNT(*) AS top_time FROM ' . RATING_ONLINE_TABLE . ' WHERE top_id = ' . (int) $row['top_id'];
                    $result = $this->db->sql_query($sql);
                    $top_online = (int) $this->db->sql_fetchfield('top_time');
                    $this->db->sql_freeresult($result);
                    $sql_upd += array('top_online' => $top_online);
                }
                /* Все изменеия фиксируем у данного сайта */
                $sql = 'UPDATE ' . RATING_TABLE . ' SET ' . $this->db->sql_build_array('UPDATE', $sql_upd) . '
					WHERE top_id = ' . $row['top_id'];
                $this->db->sql_query($sql);
            }
            /* Если создать и(или) вывести счётчик не получилось, то ошибка */
            if (!($counter = $this->count_img($action, $row))) {
                $action = $row['top_hosts'];
                $top_id = $row['top_hits'];
                $error = true;
            }
        }
        /* Если ошибка дошла сюда, значит пора выводить изображение по умолчанию */
        if ($error) {
            $this->default_img($action, $top_id);
        }
        /* Очищаем буфер, закрываем соединение и завершаем работу скрипта */
        flush();
        $this->db->sql_close();
        exit;
    }
开发者ID:bb3mobi,项目名称:bb3top,代码行数:86,代码来源:counter.php


注:本文中的phpbb\db\driver\driver_interface::sql_close方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。