本文整理汇总了PHP中memBuff类的典型用法代码示例。如果您正苦于以下问题:PHP memBuff类的具体用法?PHP memBuff怎么用?PHP memBuff使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了memBuff类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: BidPlaces
/**
* Изменение позиции пользователя.
*
* @param integer $user uid пользователя
* @param integer $transaction_id id транзакции
* @param array $bids массив, в котором индекс элементов - id места размещения, значения - сумма для поднятия позиции
*
* @return integer id операции транзакции
*/
public function BidPlaces($user, $transaction_id, $bids, &$error)
{
$bill_id = 0;
if ($bids) {
foreach ($bids as $prof => $sum) {
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/account.php';
$account = new account();
$error = $account->Buy($bill_id, $transaction_id, 21, $user, $prof, '', $sum, 0);
if ($error !== 0) {
return 0;
}
global $DB;
$sql = 'UPDATE users_first_page SET psum=psum+? WHERE id IN (SELECT id FROM users_first_page
WHERE user_id = ? AND from_date+to_date >= now() AND payed=true
AND ordered = true AND profession=? )';
$DB->query($sql, $sum, $user, $prof);
$id = 1;
}
}
if ($bill_id) {
//$account->commit_transaction($transaction_id, $user, $bill_id);
$memBuff = new memBuff();
$memBuff->flushGroup('firstpg');
}
return $id;
}
示例2: process_event
public function process_event(&$event)
{
$r = FALSE;
switch ($event->type) {
case 'memcache_delete':
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/memBuff.php';
$memBuff = new memBuff();
$memBuff->delete($event->data['key']);
$r = TRUE;
break;
case 'memcache_flush_group':
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/memBuff.php';
$memBuff = new memBuff();
$memBuff->flushGroup($event->data['key']);
$r = TRUE;
break;
case 'static_compress.createBatchBySeed':
$GLOBALS['DEBUG_VAR'] = array();
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/static_compress.php';
$memBuff = new memBuff();
$memBuff->set('eto.kostyl.inache.tupit.set.v.createBatch', 1, 1);
$stc = new static_compress();
$r = !($error = $stc->createBatchBySeed($event->data['seed']));
break;
}
if ($event->type) {
$this->log->notice("Function {$event->type}... " . ($r ? 'Success' : 'Error ' . $error));
$this->log->notice(base64_decode($event->data['seed']));
$this->log->notice(var_export($GLOBALS['DEBUG_VAR']));
}
return PGQ_EVENT_OK;
}
示例3: get_unanimated_gif
/**
* Обрезает анимированный .gif, оставляя только первый кадр.
* Обрезанный гиф сохраняет в той же директории, где и оригинал, под тем же именем, только с префиксом 'na_'.
* Если файл с таким именем (с префиксом) уже есть, то ничего не делает.
* Возвращает в случае успеха имя обрезанного гифа, в случае ошибки (или это не анимированный гиф) -- имя оригинала.
*
* @param string $dir путь к оригиналу (от корня, без '/' в начале)
* @param string $orig_name имя гифа оригинала.
* @param string $alt_dir имя альтернативной директории для поиска файла (отличной от foto)
* @return string имя обрезанного гифа
*/
function get_unanimated_gif($dir, $orig_name, $alt_dir = false)
{
if (CFile::getext($orig_name) != 'gif') {
return $orig_name;
}
$memBuff = new memBuff();
$res = $memBuff->get($orig_name);
if ($res) {
return $res;
}
$orig_file = $alt_dir ? trim($alt_dir, '/') . '/' . $orig_name : "users/" . substr($dir, 0, 2) . "/" . $dir . "/foto/" . $orig_name;
$orig_content = @file_get_contents(WDCPREFIX_LOCAL . '/' . $orig_file);
$unan_content = unanimate_gif($orig_content);
if ($unan_content !== false) {
$unan_name = "na_" . $orig_name;
$unan_file = dirname($orig_file) . "/" . $unan_name;
$unan = new CFile($unan_file);
if (!$unan->id) {
$unan = new CFile($orig_file);
$unan->name = $unan_name;
$unan->size = strlen($unan_content);
$put = $unan->putContent($unan_file, $unan_content);
// Записываем измененный файл
if ($put) {
$memBuff->set($orig_name, $unan_name, 3600 * 12);
return $unan_name;
}
} else {
$memBuff->set($orig_name, $unan_name, 3600 * 12);
return $unan_name;
}
}
return $orig_name;
// Если не смогли сохранить возвращаем оригинал
}
示例4: getListByUids
/**
* Выбрать ТУ для списка пользователей
* по указанному количеству на каждого
*
* @param type $uids
* @param type $limit
* @param type $expire
* @param type $group
* @return type
*/
public function getListByUids($uids, $limit = 3, $expire = 0, $group = false)
{
$sql = $this->db()->parse("\n SELECT \n DISTINCT ON (q.id) \n q.*,\n f.fname AS file\n FROM (\n SELECT \n s.id AS id, \n s.user_id,\n s.title AS title, \n s.price AS price,\n s.videos AS videos,\n s.total_feedbacks AS total_feedbacks,\n row_number() OVER(PARTITION BY s.user_id ORDER BY s.id DESC) AS rownum\n FROM {$this->TABLE} AS s \n LEFT JOIN {$this->TABLE_DEBT} AS od ON od.user_id = s.user_id \n LEFT JOIN {$this->TABLE_BLOCKED} AS sb ON sb.src_id = s.id \n WHERE \n s.user_id IN(?l) \n AND s.deleted = FALSE \n AND s.active = TRUE \n AND sb.src_id IS NULL\n AND (od.id IS NULL OR od.date >= NOW())\n ) AS q\n LEFT JOIN {$this->TABLE_FILES} AS f ON f.src_id = q.id AND f.small = 4\n WHERE q.rownum <= ?i\n ORDER BY q.id DESC, f.preview DESC, f.id \n ", $uids, $limit);
$memBuff = new memBuff();
$result = $memBuff->getSql($error, $sql, $expire, true, $group);
return $result;
}
示例5: bind
/**
* Сохраняет или возвращает данные связывающие рассылку в личку с рассылкой в почту. Данные актуальны с
* момента начала рассылки и до ее окончания. Данные хранятся в переменной (т.к. скрипт постоянно запущен) и
* дублируются в memcahce на случай отключения скрипта во время рассылки. Если во время рассылки в личку
* остановить скрипт и перегрузить memcahce, то данные данные потеряются и рассылка в почту не пойдет.
* Если сделать то же во время рассылки на почту, есть вероятность отправить части пользователей повторные
* письма.
*
* @param integer $messId id личного сообщения
* @param array $data массив с данными для сохранения или NULL если данные нужно получить
* @return array если $data == NULL, возвращает массив данных для $messId
*/
public function bind($messId, $data = NULL)
{
$cache = new memBuff();
$idx = -1;
if (empty($this->_binds)) {
$this->_binds = $cache->get(self::MASSSEND_BIND_CACHE_KEY);
if (!is_array($this->_binds)) {
$this->_binds = array();
}
}
if (count($this->_binds) >= 100) {
array_shift($this->_binds);
}
for ($i = count($this->_binds) - 1; $i >= 0; $i--) {
if ($this->_binds[$i]['__messId'] == $messId) {
$idx = $i;
break;
}
}
if (is_null($data)) {
return $idx >= 0 ? $this->_binds[$idx] : array();
} else {
$data['__messId'] = $messId;
if ($idx >= 0) {
$this->_binds[$idx] = $data;
} else {
$this->_binds[] = $data;
}
$cache->set(self::MASSSEND_BIND_CACHE_KEY, $this->_binds, 3600 * 48);
}
}
示例6: getCountSubscribe
/**
* Количество подписавшихся на рассылку
* @global type $DB
* @return type
*/
public function getCountSubscribe()
{
global $DB;
$memBuff = new memBuff();
$count = $memBuff->get('verify_count');
if (!$count) {
$count = $DB->val("SELECT COUNT(*) as cnt FROM verify");
$memBuff->add('verify_count', $count, 600);
}
return $count;
}
示例7: GetLastNews
/**
* Взять последнюю новость
*
* @return array Новость
*/
function GetLastNews()
{
$sql = "SELECT post_date, header FROM news ORDER BY post_date DESC, id DESC LIMIT 1";
$memBuff = new memBuff();
$headers = $memBuff->getSql($error, $sql, 1800);
if ($error) {
$error = parse_db_error($error);
} else {
$ret = $headers[0];
}
return $ret;
}
示例8: updateCache
/**
* Обновить кеш цен
*
* @global type $DB
* @return boolean
*/
public static function updateCache()
{
global $DB;
self::$_cache_data = null;
$data = $DB->rows("SELECT * FROM " . get_class($this));
if ($data) {
//Преобразуем в удобную форму пользования
foreach ($data as $el) {
self::$_cache_data[$el['op_code']][$el['param']] = $el['sum'];
}
$memBuff = new memBuff();
return $memBuff->set(self::OP_CODES_PRICE_MEMCACHE_TAG, self::$_cache_data, self::OP_CODES_PRICE_MEMCACHE_LIFE);
}
return false;
}
示例9: _createBatch
/**
* Создает пакет.
*
* @param int $type тип пакета (TYPE_CSS|TYPE_JS|TYPE_PHP_JS|TYPE_JS_UTF8)
* @param string $batch_id ид. (хеш) пакета
* @param string $batch_version устанавливаемая версия пакета (текущая версия всей статики).
* @param string $filename вернется имя файла пакета
* @param bool $light true, если сжимаем по облегченному варианту (сжатие быстрое, но не полное).
*
* @return int код ошибки или 0.
*/
private function _createBatch($type, $batch_id, $batch_version, &$filename, $light = false)
{
$log = $this->_log;
$err = 0;
$cfile = new CFile();
$filename = self::STATIC_WDPATH . '/' . $this->createFileName($batch_id, $batch_version, $this->types[$type]);
$lock_key = $this->_createBatchLockKey($batch_id, $batch_version);
if (!$light || !$cfile->CheckPath($filename, false)) {
// проверка на случай, если pgq переполнится.
$log->writeln("creating new batch file {$filename}, compressing content...");
if ($content = $this->_compress($type, $light)) {
$cfile->exclude_reserved_wdc = true;
if ($cfile->putContent($filename, $content)) {
$log->writeln('saving batch info to memcached...');
if (!$this->setBatchVersion($batch_id, $batch_version)) {
$err = 3;
}
} else {
$err = 2;
}
} else {
$err = 1;
}
}
if ($err) {
$log->writeln("failed ({$err})");
$filename = null;
}
$log->writeln('unset lock...');
$ok = $this->memBuff->delete($lock_key);
$log->writeln($ok ? 'ok' : 'failed');
return $err;
}
示例10: del
/**
* Удаляет файл из кэша.
*
* @param string|int $key ключ [path+fname] или [id]
*/
public function del($key)
{
if ($r = $this->_cache[$key]) {
unset($this->_cache[self::_k($r, 1)]);
unset($this->_cache[self::_k($r, 2)]);
}
if ($r = $this->_memBuff->get(self::_memkey($key))) {
$this->_memBuff->delete(self::_memkey(self::_k($r, 1)));
$this->_memBuff->delete(self::_memkey(self::_k($r, 2)));
}
}
示例11: getCBRates
/**
* Получает курсы валют с сайта ЦБ
*
* @return array массив, индексированный кодами валют (USD, EUR и т.д.), элементы которого есть свойства данной валюты.
* Курс рубля к каждой валюте берется из свойства 'Value'.
*/
function getCBRates()
{
static $rates = NULL;
if ($rates) {
return $rates;
}
$memBuff = new memBuff();
$curr_day = strtotime(date('d.m.Y'));
if ($rdata = $memBuff->get('getCBRates')) {
$rates = $rdata['rates'];
if ($rdata['day'] == $curr_day) {
return $rates;
}
}
$xml = @file_get_contents('http://www.cbr.ru/scripts/XML_daily.asp', false, stream_context_create(array('http' => array('timeout' => 1))));
//было 5 сек
if ($xml && get_http_response_code($http_response_header) == 200) {
$xmlDoc = new DOMDocument();
if (@$xmlDoc->loadXML($xml)) {
$rates = NULL;
$xpath = new DOMXPath($xmlDoc);
$valutes = $xpath->query('//Valute/CharCode');
foreach ($valutes as $v) {
$name = $v->nodeValue;
if ($children = $v->parentNode->childNodes) {
foreach ($children as $ch) {
if ($ch->nodeType == XML_ELEMENT_NODE) {
$rates[$name][$ch->nodeName] = $ch->nodeValue;
}
}
}
}
//@todo: кешируем курс пока на сутки потом нужно перерабоать в крон и БД
$memBuff->set('getCBRates', array('day' => $curr_day, 'rates' => $rates), 86400);
}
}
return $rates;
}
示例12: quickPRJPayAccount
function quickPRJPayAccount()
{
$objResponse = new xajaxResponse();
$uid = get_uid(false);
ob_start();
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/billing.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/payed.php';
$bill = new billing($uid);
$billReserveId = $bill->checkoutOrder();
$payed_sum = $bill->getOrderPayedSum();
if ($bill->isAllowPayFromAccount()) {
$complete = $bill->buyOrder($billReserveId);
if ($complete) {
$_SESSION['quickprj_ok'] = 1;
$memBuff = new memBuff();
$project_id = $memBuff->get('bill_ok_project_' . $uid);
if ($project_id) {
$is_payed = $memBuff->get('bill_ok_project_payed_' . $uid);
if ($is_payed) {
$memBuff->delete('bill_ok_project_payed_' . $uid);
$friendly_url = "/public/?step=2&public={$project_id}";
} else {
$friendly_url = getFriendlyURL('project', $project_id);
$_SESSION['quickprj_ok'] = 1;
$friendly_url .= '?quickprj_ok=1';
}
$objResponse->script("window.location = '{$friendly_url}';");
$memBuff->delete('bill_ok_project_' . $uid);
} else {
$objResponse->script("window.location = '/?quickprj_ok=1';");
}
}
}
ob_end_clean();
return $objResponse;
}
示例13: getList
/**
* ¬озвращает список публичных типовых услуг по заданным услови¤м и пагинацией
*
* @return array
*/
public function getList($excluded_ids = array())
{
$criteria = array($this->category_id, $this->city_id, $this->country_id, $this->keywords, $this->limit, $this->offset, $this->price_ranges, $this->price_max, $this->order, $excluded_ids, $this->user_id);
$membuf = new memBuff();
$memkey = __METHOD__ . '#' . md5(serialize($criteria));
if (false !== ($result = $membuf->get($memkey)) && is_release()) {
return $result;
}
$sort = $this->getSort();
# @see http://sphinxsearch.com/forum/view.html?id=11538 about city = x or country = y
$sphinxClient = new SphinxClient();
$sphinxClient->SetServer(SEARCHHOST, SEARCHPORT);
$sphinxClient->SetLimits($this->offset, $this->limit, 20000);
$sphinxClient->SetSortMode(SPH_SORT_EXTENDED, $sort);
$sphinxClient->SetFieldWeights(array('title' => 2, 'extra_title' => 1));
//$sphinxClient->SetRankingMode(SPH_RANK_PROXIMITY_BM25);
$selectExpression = '*';
// все колонки
if ($this->user_id) {
$selectExpression .= ", IF(user_id = {$this->user_id}, 1, 0) as match_user";
$sphinxClient->setFilter('match_user', array(1));
}
if ($this->category_id) {
$selectExpression .= ", IF(category_id = {$this->category_id} or category_parent_id = {$this->category_id}, 1, 0) as match_category";
$sphinxClient->setFilter('match_category', array(1));
}
if ($this->country_id) {
$selectExpression .= ", IF(user_country_id = {$this->country_id} or country_id = {$this->country_id}, 1, 0) as match_country";
$sphinxClient->setFilter('match_country', array(1));
}
if ($this->city_id) {
$selectExpression .= ", IF(user_city_id = {$this->city_id} or city_id = {$this->city_id}, 1, 0) as match_city";
$sphinxClient->setFilter('match_city', array(1));
}
if (count($this->price_ranges)) {
$match_price_exprs = array();
foreach ($this->getPriceRanges() as $i => $price_range) {
if (!isset($this->price_ranges[$i])) {
continue;
}
$match_price_exprs[] = "price_{$i} = 1";
}
$match_price_exprs = implode(' or ', $match_price_exprs);
$selectExpression .= ", IF({$match_price_exprs}, 1, 0) as match_price";
$sphinxClient->setFilter('match_price', array(1));
}
if ($this->price_max > 0) {
$selectExpression .= ", IF(price <= {$this->price_max}, 1, 0) as match_price_max";
$sphinxClient->setFilter('match_price_max', array(1));
}
$searchString = '';
if (!empty($this->keywords)) {
$keywords = implode(' ', array_filter(preg_split('/\\s*,\\s*/', $this->keywords)));
$searchString = trim($keywords);
//$searchString = $this->GetSphinxKeyword($searchString);
$sphinxClient->SetMatchMode(SPH_MATCH_ANY);
//SPH_MATCH_EXTENDED2);
}
if (count($excluded_ids)) {
$sphinxClient->setFilter('tservice_id', $excluded_ids, true);
}
$sphinxClient->SetSelect($selectExpression);
$queryResult = $sphinxClient->query($searchString, "tservices;delta_tservices");
//echo '<pre>error: ', $sphinxClient->GetLastError(), '</pre>';
//echo '<pre>warn : ', $sphinxClient->GetLastWarning(), '</pre>';
$list = array();
$total = 0;
if (isset($queryResult['matches'])) {
foreach ($queryResult['matches'] as $id => $row) {
$row['attrs']['id'] = $id;
$list[] = $row['attrs'];
}
$total = $queryResult['total_found'] < $queryResult['total'] ? $queryResult['total_found'] : $queryResult['total'];
}
$result = array('list' => $list, 'total' => $total);
if ($this->_ttl) {
$membuf->set($memkey, $result, $this->_ttl);
}
return $result;
}
示例14: createBill
/**
* Создает новый счет, отправляет на регистрацию в платежную систему.
*
* @param integer $uid ид. пользователя.
* @param array $request параметры ($_POST).
* @return array $error массив ошибок.
*/
function createBill($request)
{
if (!$this->uid) {
return 'Пользователь не определен';
}
$account = new account();
$account->GetInfo($this->uid, true);
if ($error = $this->validate($request, $account->id)) {
return $error;
}
$this->DB->start();
$aData = array('account_id' => $account->id, 'phone' => $this->form['phone'], 'sum' => $this->form['sum']);
$id = $this->DB->insert("qiwi_account", $aData, "id");
$oper_xml = '';
switch ($request['oper_code']) {
case 'megafon':
$oper_xml = '<extra name="megafon2-acc">1</extra>';
break;
case 'mts':
$oper_xml = '<extra name="mts-acc">1</extra>';
break;
case 'beeline':
$oper_xml = '<extra name="beeline-acc">1</extra>';
break;
}
if ($id) {
$xml = '<?xml version="1.0" encoding="' . $this->encode . '"?>' . '<request>' . '<protocol-version>4.00</protocol-version>' . '<request-type>30</request-type>' . '<extra name="password">' . $this->passwd . '</extra>' . '<terminal-id>' . $this->login . '</terminal-id>' . '<extra name="txn-id">' . $id . '</extra>' . '<extra name="to-account">' . $this->form['phone'] . '</extra>' . '<extra name="amount">' . $this->form['sum'] . '</extra>' . '<extra name="comment">' . $this->form['comment'] . '</extra>' . '<extra name="create-agt">' . $this->create_agt . '</extra>' . '<extra name="ltime">' . $this->ltime . '</extra>' . '<extra name="ALARM_SMS">' . $this->alarm_sms . '</extra>' . '<extra name="ACCEPT_CALL">' . $this->accept_call . '</extra>' . $oper_xml . '</request>';
if ($this->passwd == 'debug') {
$result = '<response><result-code fatal="false">0</result-code></response>';
} else {
$result = $this->_request($xml);
}
if ($err = $this->_checkResultError($result)) {
$error['qiwi'] = $err;
$this->DB->rollback();
die;
return $error;
}
// различные ограничения по телефонному номеру
unset($aData['sum']);
$sCode = substr($aData['phone'], 0, 3);
$sNum = substr($aData['phone'], 3);
$sOper = $this->DB->val('SELECT COALESCE(operator_id, 0) FROM mobile_operator_codes
WHERE code = ? AND ? >= start_num AND ? <= end_num', $sCode, $sNum, $sNum);
$aData['operator_id'] = $sOper;
$this->DB->insert('qiwi_phone', $aData);
$memBuff = new memBuff();
$nStamp = time();
$sKey = 'qiwiPhone' . $account->id . '_' . $aData['phone'];
if (!($aData = $memBuff->get($sKey))) {
$aData = array('time' => $nStamp, 'cnt' => 0);
}
$aData['time'] = $aData['time'] + 3600 > $nStamp ? $aData['time'] : $nStamp;
$aData['cnt'] = $aData['time'] + 3600 > $nStamp ? $aData['cnt'] + 1 : 1;
$memBuff->set($sKey, $aData, 3600);
//-----------------------------------
}
$this->DB->commit();
$this->saveBillForm();
return 0;
}
示例15: getHHCurrency
/**
* Возвращает информацию по заданной HH-валюте
*
* @param string $code код валюты (USD, UAH и т.д.).
* @return array
*/
function getHHCurrency($code)
{
global $DB;
$sql = "SELECT * FROM hh_currency WHERE code ILIKE '{$code}'";
$memBuff = new memBuff();
if ($rows = $memBuff->getSql($error, $sql, self::MEM_LIFE)) {
$ret = $rows[0];
}
return $ret;
}