PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (55): В начало « ... 4 5 6 7 [8] 9 10 11 12 ... » В конец

> Найдено сообщений: 814
Вездеход Отправлено: 21 Декабря, 2009 - 21:11:12 • Тема: cron : перебор огромного количества данных • Форум: Программирование на PHP

Ответов: 14
Просмотров: 936
помогите плз с кроном =)

дано от 1 до 100 тысяч записей.
необходимо их выбрать из базы.
после этого необходимо их обработать (каждую запись) (немного математики)
затем на основе каждой записи снова пройтись по другим таблицам и обновить данные.

итого получается несколько тысяч запросов...
отсюда вопрос - как выжить серверу? =)

проще говоря, хочу запустить вот такой вот крон на сервере, чтобы он выполнялся раз в 12 часов и обновлял за день информацию. есть опасения что во время обработки так как идет сразу много запросов к базе - база будет недоступна...
верны ли мои опасения?
и стоит ли сделать задержку в выполнении скрипта - например делать паузу (sleep(2)) после обработки каждый 500 записей например

а если еще скажите чего и куда прописывать для запуска крона будет вопще идеально =)
я просто с ним раньше не работал никада... хоть и наслышан
Вездеход Отправлено: 21 Декабря, 2009 - 16:31:00 • Тема: шаблоны, родные... • Форум: Регулярные выражения

Ответов: 16
Просмотров: 887
movEAX, да написать то я и сам могу..

Champion пишет:
И всё-таки preg_match_all + explode и будет хорошо.

да, я тоже уже на этом варианте остановился пока, хотя если получится с регуляркой - переписать будет не проблемой =)
Вездеход Отправлено: 20 Декабря, 2009 - 22:16:19 • Тема: шаблоны, родные... • Форум: Регулярные выражения

Ответов: 16
Просмотров: 887
trot пишет:
Предлагаю следующее

да, увы это пока основной вариант... =(
Вездеход Отправлено: 20 Декабря, 2009 - 21:03:57 • Тема: шаблоны, родные... • Форум: Регулярные выражения

Ответов: 16
Просмотров: 887
вот такой текст парсю:
CODE (text):
скопировать код в буфер обмена
  1. <table width="100%" border="0" cellspacing="0" cellpadding="0">
  2.           <tr>
  3.             <td width="20" align="left" valign="middle"><input type="checkbox" name="test" id="test" /></td>
  4.             <td width="20" align="left" valign="middle">{{TEST}}</td>
  5.             <td width="50" align="left" valign="middle">{{TEST:123}}</td>
  6.             <td width="300" align="left" valign="middle">{{TEST:123:456}}</td>
  7.             <td align="left" valign="middle">{{TEST:123:456:789}}</td>
  8.           </tr>
  9.           <tr>
  10.             <td colspan="5" align="left" valign="top">msg</td>
  11.           </tr>
  12. </table>


вот такой результат:
CODE (text):
скопировать код в буфер обмена
  1. Array
  2. (
  3.     [0] => Array
  4.         (
  5.             [0] => {{TEST}}
  6.             [1] => TEST
  7.         )
  8.  
  9.     [1] => Array
  10.         (
  11.             [0] => {{TEST:123}}
  12.             [1] => TEST
  13.             [2] => 123
  14.         )
  15.  
  16.     [2] => Array
  17.         (
  18.             [0] => {{TEST:123:456}}
  19.             [1] => TEST
  20.             [2] => 456
  21.         )
  22.  
  23.     [3] => Array
  24.         (
  25.             [0] => {{TEST:123:456:789}}
  26.             [1] => TEST
  27.             [2] => 789
  28.         )
  29.  
  30. )
  31.  


вот такая регулярка:
PHP:
скопировать код в буфер обмена
  1. preg_match_all("~{{([^}}:]*)(?::([^}}:]*))*}}~u", $tpl, $regs, PREG_SET_ORDER);
Вездеход Отправлено: 20 Декабря, 2009 - 20:54:00 • Тема: шаблоны, родные... • Форум: Регулярные выражения

Ответов: 16
Просмотров: 887
trot пишет:
Попробуй это

{{([^}}:]*)(?::([^}}:]*))*}}


отлично!
уже может брать из таких вариантов все
CODE (text):
скопировать код в буфер обмена
  1. {{P1}}
  2. {{P1:P2}}
  3. {{P1:P2:P3}}
  4. {{P1:P2:P3:P4}}

однако выбирает только первое и последнее значение...)
т.е. в последнем примере он взял только Р1 и Р4
Вездеход Отправлено: 20 Декабря, 2009 - 20:38:19 • Тема: шаблоны, родные... • Форум: Регулярные выражения

Ответов: 16
Просмотров: 887
Champion пишет:
Почему много раз? 1 раз explode и trim для первого и последнего элемента. trim со вторым аргументом { и } чтоб эти скобки отрезать.


ненене, тут совсем другое дело....
есть текст. в нем могут встречаться шаблоны как те, которые я написал выше.
вот все шаблоны я вытащить могу. а чтобы их сразу корректно на части разбить - не получается...
если в шаблоне (страницы) есть к примеру 20 разных шаблонов - мне 20 раз нужно будет обрабатывать строку которая между фигурными скобками...
потому и нужна регулярка ...
Вездеход Отправлено: 20 Декабря, 2009 - 10:51:54 • Тема: шаблоны, родные... • Форум: Регулярные выражения

Ответов: 16
Просмотров: 887
valenok
да, это как вариант вопщем то...
просто не хотел использовать explode, потому что много раз придется его вызывать... боюсь лишней нагрузки
Вездеход Отправлено: 20 Декабря, 2009 - 01:26:50 • Тема: Приёмы программировни • Форум: Программирование на PHP

Ответов: 10
Просмотров: 997
Tmin10
создай файл .htaccess с содержанием:
CODE (text):
скопировать код в буфер обмена
  1. RewriteEngine on
  2. RewriteCond $1 !^(index\.php|login\.php|robots\.txt|pager/theme/|pager/blocks/)
  3. RewriteRule ^(.*)$ /index.php/$1 [L]

во второй строке думаю все понятно как прописывается? - это выставляются запреты на выполнение данного условия. т.е. если ты на сайте зайдешь в pager/theme/ - то тебя система пропустит. а вот в pager/theme2 - уже нет =)

в третьей строке тут - ^(.*) прописываются условия - что нужно будет передавать...

а потом уже обрабатывай $_SERVER['REQUEST_URI'] в файле index.php (или где еще)
из нее легко извлечь массив с параметрами, переданными в адресе


magistr пишет:
2 - 1251

не советуйте такое просто так...
UTF8 нужна если потом проблем не хотите...
Вездеход Отправлено: 20 Декабря, 2009 - 01:11:26 • Тема: шаблоны, родные... • Форум: Регулярные выражения

Ответов: 16
Просмотров: 887
граждане, помогите с регуляркой =)

есть текст вида:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. {{P1}}
  3. {{P1:P2}}
  4. {{P1:P2:P3}}
  5. {{P1:P2:P3:P4}}
  6.  


подскажите какую регулярку составить чтобы в итоге после обработки был массив, в котором были части P1, P2, P3, P4

пробовал так:
PHP:
скопировать код в буфер обмена
  1. preg_match_all("~{{(.*)(:.*)*}}~u", $tpl, $regs, PREG_SET_ORDER);

но не получается - в итоге возвращается массив из того что между {{ и }} , без разбития по частям... т.е. он вторую часть регулярки (:.*)* читает не верно. пробовал делать ограничения на разделение но все равно...

п.с.
P1, P2, P3, P4 - произвольные комбинации символов
Вездеход Отправлено: 17 Декабря, 2009 - 14:55:27 • Тема: мистический пробел =( • Форум: Программирование на PHP

Ответов: 20
Просмотров: 3141
JustUserR пишет:
Вы наверное хотели сказать Мозилла вот такая гадость - я честно удивляюсь как в этом браузере можно работать

мазила хорошая! мне она нравится больше оперы...
Вездеход Отправлено: 16 Декабря, 2009 - 15:22:47 • Тема: мистический пробел =( • Форум: Программирование на PHP

Ответов: 20
Просмотров: 3141
вот каталог с блоком
(Добавление)
решение найдено!
чтобы эта дрянь пропала необходимо пересохранить файлы (в моем случае с блоками и темой) через notepad++ в виде UTF8 без BOM
и символ исчезает =)

Спасибо Чемпиону!
Вездеход Отправлено: 16 Декабря, 2009 - 14:18:03 • Тема: мистический пробел =( • Форум: Программирование на PHP

Ответов: 20
Просмотров: 3141
valenok пишет:
А, ну хорошо что все рашилось.
Возможно действительно попался какой-то наглый stx или еще какой нибудь eol символ
не отображаемый в редакторе. Хотя меня удивило что notepad++ его не заметил.


тестирование продолжается...
символ появляется в любом случае.
если после символа идет тег, который делает перенос строки (hr, div, p) то получается разрыв.
если перенос не нужен (тег span или вообще без тегов) то перенос и не видно...
(Добавление)
новые подробности.
переписал вызов блоков...
до этого у меня система получала массивом названия блоков необходимых для работы и загружала только файл с "инструкциями" - ну чтобы прописать все первоначальные параметры.
после этого при вызове блока через функцию show(get)_block у меня подтягивался основной файл с кодом и уже выполнялась основная функция.

что теперь.
прописал чтобы в функциях файл этот не загружался, а грузился сразу вместе с файлом инструкций.

результат - теперь вывод идет правельно.
но это еще не все...
если сохранить страницу - шапка опять криво сохраняется (боди перед стилями идет).
и сразу после тега body появляются эти мистические символы, в количестве, равном количеству вызовов разных блоков...
(Добавление)
новые подробности))

опера сохраняет страницу корректно, и добавляет эти мистические символы перед тегом HTML
мазила сохраняет все криво и вставляет после тега body

тестирование продолжается))
(Добавление)
у меня в файле index.php
есть такая запись:

PHP:
скопировать код в буфер обмена
  1. include_once('kernel/kernel.php');
  2. include_once('pager/pager.php');
  3. return_page();

сперва гружу ядро системы - все настройки, и все нужное
потом загружаю файл, ответственный за генерацию страницы.
потом вызываю функцию которая собственно и выводит саму страницу.

так вот.
если вызвать только ядро - проблем нет - символы не появляются.
если загрузить файл pager.php - то появляются 4 мистических символа (дальше ничего, так как вывода инфы нет)
если вызвать функцию return_page - то появляется 5й мистический символ...
больше 5 не выводится =)
(Добавление)
итак, методом научного тыка выяснилось:

PHP:
скопировать код в буфер обмена
  1. // список разрешенных блоков
  2.         $ACTIV_BLOCKS = array('top_banner','logo','top_services');
  3. // тут указаны блоки, которые уже "прогрузились"
  4.         $LOAD_BLOCK = array();
  5.  
  6.         foreach($ACTIV_BLOCKS as $value) {
  7.                 if(!in_array($value,$LOAD_BLOCK))       {
  8.                         include_once("blocks/".$value."/load.php");
  9.                         include_once("blocks/".$value."/block.php");
  10.                 }
  11.         }


вот этот код возвращает 4 мистических символа. как и откуда берутся они не понятно.
тщательно проверил все 6 файлов - толку нет...
при этом не важно сколько загружать так блоков - при загрузке файла load.php от всех блоков - символ получается только один.
при загрузке файла block.php - символов образуется столько же, сколько и требуется загрузить блоков. (в данном случае 3)

так же 5й символ образуется вот здесь:

function return_page() {
include_once('pager/theme/page.tpl.php');
}

(Добавление)
скопировал этот мистический символ.
и вставил сюда, в форум
потом через исходный код страницы нашел его - это вот эта сволочь мне мешает:

а что за символ такое кто нить знает?
(Добавление)
нашел инфы немного в нете... не я один такой оказывается

http://www[dot]imho[dot]ws/showthread[dot]ph[dot][dot][dot]5177#post1335177
вот здесь чел написал чтото про этот символ. кто нить расшифруйте плз...
я не понял а то...))
http://www.imho.ws/showthread.php?p=1335177#post1335177 пишет:
На всякий случай (вдруг у кого что-то подобное будет) поделюсь, что же было: проблемным символом оказался FEFF - это ByteOrderMark, который некоторые редакторы добавляют в UTF-8 файлы
Вездеход Отправлено: 16 Декабря, 2009 - 13:34:26 • Тема: мистический пробел =( • Форум: Программирование на PHP

Ответов: 20
Просмотров: 3141
Stierus пишет:
отдельно посмотри, что выдает?

тут проблем нет... я проверил по исходникам.
эта функция просто берет по ключу значение из массива и выдает... косяков нету)
(Добавление)
valenok пишет:
Не соответсвуют у тебя "должно быть" и "получается после сохранения"
В одном стили до body во втором после. Браузер сам их переставил ?

да, в том то и дело - первый раз такое вижу...

valenok пишет:
Вывелся он после <body> значит виноват show_block (top_services)
Выше ты привел код get_block, самого show_block я не вижу.

PHP:
скопировать код в буфер обмена
  1. function get_block($name, $start='', $end='') {
  2.                 $return = '';
  3.                 if(!check_block($name)) { return ''; }
  4.                 include_once("blocks/".$name."/block.php");
  5.                 if(!function_exists('block__'.$name)) return '';
  6.                 $return .= $start.call_user_func('block__'.$name).$end;
  7.                 return $return;
  8.                 //return $start.$name.$end; -вот так выводит без этого символа...
  9.         }
  10.        
  11.         function show_block($name, $start='', $end='') {
  12.                 echo get_block($name, $start, $end);
  13.         }

(Добавление)
valenok пишет:
А если стереть return '<hr>'; и написать return "aoeu"; все встанет на место?
Может символ в редакторе не отображается, но он там где-то есть ?
Сотри сразу всю строку и напиши всю заного.
Если не поможет - давай читать show_block


я полностью переписал блок. написал вывод заного...
пока мистический символ пропал...
щас дальше првоерю

зы. в исходниках блока этого символа все равно там не было!
Вездеход Отправлено: 15 Декабря, 2009 - 23:48:06 • Тема: мистический пробел =( • Форум: Программирование на PHP

Ответов: 20
Просмотров: 3141
угу.. вопрос как ее убрать и откуда эта сволочь берется((
все свои коды перепроверил - ее нигде нет. это какая то функия генерит ее как то...
убрать ее тоже никак не получается



проверил вызов функции. все работает стабильно, т.е. данный мистический символ берется непонятно где и откуда, но он не имеет отношения именно к вызовам функций.
видимо где то еще косяк...
публикую коды дальше...

в ядре прописывается путь к шаблону.
потом он грузится через вот эту функцию:
PHP:
скопировать код в буфер обмена
  1. function return_page() {
  2.         include('pager/theme/page.tpl.php');
  3. }


в файле с темой простой HTML код, с вставками php
примерно так:
PHP:
скопировать код в буфер обмена
  1. <html<? return_params('HTML');?>>
  2. <head>
  3. <? return_params('HEAD');?>
  4. <meta http-equiv="Content-Type" content="text/html; charset=<? return_params('CHARSET');?>">
  5.  
  6. <meta content="<? return_params('DESCRIPTION');?>" name="description">
  7. <meta content="<? return_params('KEYWORDS');?>" name="keywords">
  8. <title><? return_params('TITLE');?></title>
  9. <link href="<? return_params('FAVICON');?>" type="image/x-icon" rel="shortcut icon">
  10.  
  11. <? return_params('CSS_');?>
  12. <link rel="stylesheet" type="text/css" href="<? return_params('CSS');?>">
  13. <style type="text/css">
  14.         body {margin:0px;}
  15. </style>
  16. <? return_params('JAVASCRIPT');?>
  17. </head>
  18. <body><?show_block('top_services');?>

может это как то влияет??
(Добавление)
в исходных кодах страницы опера показывает этот мистический символ оказывается...
и возникла новая проблема.
если сохранить странице которая получается в итоге - то код страницы меняется!

т.е. должно быть так:
CODE (text):
скопировать код в буфер обмена
  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  4. <meta content="описание сайта сюды" name="description">
  5. <meta content="ключевые, слова, игры" name="keywords">
  6. <title>***</title>
  7. <link href="FAVICON.ico" type="image/x-icon" rel="shortcut icon">
  8.  
  9. <link rel="stylesheet" type="text/css" href="/pager/blocks/logo/style.css" />
  10. <link rel="stylesheet" type="text/css" href="pager/blocks/top_services/style.css" />
  11. <link rel="stylesheet" type="text/css" href="/pager/theme/style.css">
  12. <style type="text/css">
  13.         body {margin:0px;}
  14. </style>
  15. </head>
  16. <body>

а после сохранения получается воттакое:
Цитата:

<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta content="описание сайта сюды" name="description"><meta content="ключевые, слова, игры" name="keywords"><title>***</title></head><body>






<link href="***/FAVICON.ico" type="image/x-icon" rel="shortcut icon">

<link rel="stylesheet" type="text/css" href="***_files/style.css">
<link rel="stylesheet" type="text/css" href="***_files/style_003.css">
<link rel="stylesheet" type="text/css" href="***_files/style_002.css">
<style type="text/css">
body {margin:0px;}
</style>


ребят, че за мистика происходит?
(Добавление)
если у кого нить есть лишних пара минут - буду рад помощи
могу дать полные исходники даже если нужно
Вездеход Отправлено: 15 Декабря, 2009 - 22:53:31 • Тема: мистический пробел =( • Форум: Программирование на PHP

Ответов: 20
Просмотров: 3141
я тестил на 3х - опера выводит все корректно, ИЕ и мазила делают почему то перенос строки на месте этого символа...
проверьте сами если не верите - файлик я выше прикрепил

Страниц (55): В начало « ... 4 5 6 7 [8] 9 10 11 12 ... » В конец
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB