Перейти к содержимому


- - - - -

Язык php


  • Вы не можете отвечать в этой теме
58 replies to this topic

#41 Ilg

Ilg

    geek

  • Root Admin
  • PipPipPipPipPipPipPip
  • 2 717 Сообщений:
  • Time Online: 17d 6h 22m 31s

Отправлено 14 Февраль 2008 - 01:07

хорошее время, чего плачешься тогда smile.gif
а ты как замеряешь? первой строкой идет включение таймера и последней подсчет?
  • 0

#42 Эльказ

Эльказ

    PHP Specialist

  • Постояльцы
  • PipPipPipPipPipPip
  • 1 793 Сообщений:
  • Time Online: 5h 33m 54s

Отправлено 14 Февраль 2008 - 01:15

Ilg,
У меня нет ООП в коде wink.gif Вообще. Все процедурно, т.е как я тебе и описал smile.gif))

Измеряю так:
Syntax Highlighted Code: PHP
 
Первая строчка:
$tm_start = array_sum(explode(' ', microtime()));
...
Последняя строчка:
$secs_total = array_sum(explode(' ', microtime())) - $tm_start;
 


Источник: http://www.php.net/m...otime.php#76804
  • 0

#43 Ilg

Ilg

    geek

  • Root Admin
  • PipPipPipPipPipPipPip
  • 2 717 Сообщений:
  • Time Online: 17d 6h 22m 31s

Отправлено 14 Февраль 2008 - 01:44

а распечатываешь как?

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

Page processing time: 0.20 sec (0.2068 sec)
в скобках твой вариант.

что в принципе неудивительно, тогда оставлю свой метод smile.gif
  • 0

#44 Эльказ

Эльказ

    PHP Specialist

  • Постояльцы
  • PipPipPipPipPipPip
  • 1 793 Сообщений:
  • Time Online: 5h 33m 54s

Отправлено 14 Февраль 2008 - 05:29

Ilg, распечатываю:
echo "<!-- Page generated in ".$total_secs." sec. -->";
Это уже самая последняя строчка smile.gif

Оффтоп не большой: иногда, при заходе на форум, выдается 500-ая ошибка. Так и должно быть? smile.gif После рефреша окна все проходит.

Это сообщение было изменено Elkaz: 14 Февраль 2008 - 05:30

  • 0

#45 Ilg

Ilg

    geek

  • Root Admin
  • PipPipPipPipPipPipPip
  • 2 717 Сообщений:
  • Time Online: 17d 6h 22m 31s

Отправлено 14 Февраль 2008 - 05:44

Elkaz,

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

#46 Эльказ

Эльказ

    PHP Specialist

  • Постояльцы
  • PipPipPipPipPipPip
  • 1 793 Сообщений:
  • Time Online: 5h 33m 54s

Отправлено 14 Февраль 2008 - 05:45

Ilg, У тебя тут РНР стоит как fastcgi? Не как отдельный модуль Апача?


  • 0

#47 Ilg

Ilg

    geek

  • Root Admin
  • PipPipPipPipPipPipPip
  • 2 717 Сообщений:
  • Time Online: 17d 6h 22m 31s

Отправлено 14 Февраль 2008 - 05:55

Elkaz,

ага фастсжи, мы оффтопим smile.gif
  • 0

#48 Эльказ

Эльказ

    PHP Specialist

  • Постояльцы
  • PipPipPipPipPipPip
  • 1 793 Сообщений:
  • Time Online: 5h 33m 54s

Отправлено 14 Февраль 2008 - 05:58

Ilg, smile.gif хотелось бы на пример твоего кода посмотреть smile.gif на РНР


  • 0

#49 Ilg

Ilg

    geek

  • Root Admin
  • PipPipPipPipPipPipPip
  • 2 717 Сообщений:
  • Time Online: 17d 6h 22m 31s

Отправлено 14 Февраль 2008 - 06:06

Elkaz,

Syntax Highlighted Code: PHP
 
/**
* Process request.
*
* @param array $_options options to apply to request.
* @param array $_int_options interceptors options.
*/

public function process($_options, $_int_options = array())
{
$_options = PHLControllerInit::_initOptions($_options);
$_int_options = PHLControllerInit::_initOptions($_int_options);
 
$interceptor = $this->matchInterceptors($_int_options);
$rule = $this->matchRules($_options);
 
if (count($rule) == 0) {
if ($this->options['last_behavior'] == '404') {
PHLCore::get()->response->status(
'404', 'Controller Rule Not Found', '1.0');
}
else if ($this->options['last_behavior'] == 'exception') {
throw new PHLException('Controller Rule Not Found');
}
exit;
}
$rule = PHLControllerInit::_initRule(
$this->mergeRule($interceptor, $rule));
 
$context = NULL;
$session = NULL;
try {
if ($rule['session']) {
$this->initSession($rule['session']);
$session = PHLCore::get()->session;
}
$context = $this->initContext($rule);
$this->loadContext($rule['context'], $context);
if ($rule['context']['ref_save']) {
$context->saveReferer();
}
if (isset($rule['context']['name'])) {
$session->set($rule['context']['name']);
}
$ok = true;
if (isset($rule['auth'])) {
$ok = $this->initAuthenticator($rule, $context);
}
$count = isset($rule['processor_set'])
? count($rule['processor_set']) : 0;
 
if ($ok && $count > 0) {
for ($i = 0; $i < $count; $i++) {
$p = $rule['processor_set'][$i];
if ($this->matchProcessor($p) == false) {
continue;
}
if (isset($p['validate'])) {
$ok = $this->validate($p['validate'], $context);
}
if ($ok && strlen($p['worker']) > 0) {
$res = true;
array_unshift($p['args'], $context);
$res = call_user_func_array(
phlParseCallableName($p['worker']), $p['args']);
$ok = ($res);
if ($ok && $p['authenticator'] && isset($rule['auth'])) {
$ok = $this->authenticate($res, $rule['auth']);
}
if ($ok) {
$this->handleEvent(true,
$p, $rule['context'], $context);
}
}
if ($ok == false) {
break;
}
}
}
if ($ok == false) {
$this->handleEvent(false, $rule, $rule['context'], $context);
}
if (isset($rule['template'])) {
$this->processTemplate($rule['template'], $context);
if ($rule['context']['save']) {
$session->set($rule['context']['name'], $context);
}
}
}
catch(PHLException $ex) {
if (is_null($context)) {
$context = $this->initContext($rule);
}
$context->global_errors->add($ex->getMessage());
if (PHLCore::get()->debug_mode) {
$context->global_errors->add($ex->getDescription());
}
$this->handleEvent(false, $rule, $rule['context'], $context);
if (isset($rule['template'])) {
$this->processTemplate($rule['template'], $context);
if ($rule['context']['save']) {
$session->set($rule['context']['name'], $context);
}
}
else {
throw $ex;
}
}
}
 

  • 0

#50 Эльказ

Эльказ

    PHP Specialist

  • Постояльцы
  • PipPipPipPipPipPip
  • 1 793 Сообщений:
  • Time Online: 5h 33m 54s

Отправлено 14 Февраль 2008 - 06:15

Ilg,
Для меня это трудночитаемый код smile.gif
Спасибо. Пример моего:

Syntax Highlighted Code: PHP
 
function puton ($thing_id, $user_id){
// фильтруем переменные
$thing_id = intval (mysql_real_escape_string ($thing_id));
$user_id = intval (mysql_real_escape_string ($user_id));
// сначала проверяем, имеет ли пользователь достаточное количество статов и уровень
$row = playerinfo ($user_id);
$inf = winfo ($thing_id);
$er = array();
 
if ($inf['give_power'] < 0) $gpower = $inf['give_power'];
if ($inf['give_intellect'] < 0) $gintellect = $inf['give_intellect'];
if ($inf['give_knowleadge'] < 0) $gknowleadge = $inf['give_knowleadge'];
if ($inf['give_reaction'] < 0) $greaction = $inf['give_reaction'];
if ($inf['give_dodge'] < 0) $gdodge = $inf['give_dodge'];
if ($inf['give_health'] < 0) $ghealth = $inf['give_health'];
 
 
 
 
 
$mass = sumall ($user_id);
$S = mysql_query ("SELECT * FROM `".table_weapons."` WHERE wtype = '$inf[wtype]' AND weared = '1' AND owner = '$user_id'");
if ($row['level'] < $inf['need_level']) $er[] = 'Ваш уровень слишком мал';
if ($row['power'] < $inf['need_power']) $er[] = 'У вас не хватает Силы';
if ($row['intellect'] < $inf['need_intellect']) $er[] = 'У вас не хватает Интеллекта';
if ($row['knowleadge'] < $inf['need_knowleadge']) $er[] = 'У вас не хватает Знаний';
if ($row['health'] < $inf['need_health']) $er[] = 'У вас не хватает Здоровья';
if ($row['dodge'] < $inf['need_dodge']) $er[] = 'У вас не хватает Ловкости';
if ($row['reaction'] < $inf['need_reaction']) $er[] = 'У вас не хватает Реакции';
if (($row['power'] * MASS_PARAM) < $mass['mass']) $er[] = 'У вас не хватает свободной массы';
 
if (mysql_num_rows ($S) != 0 && $inf['wtype'] != 1) $er[] = 'На вас уже надета вещь данного типа';
if (mysql_num_rows ($S) > 2 && $inf['wtype'] = 1) $er[] = 'Вы не можете взять больше 2-ух оружий';
 
if ($row['power']+$gpower < $inf['need_power']) $er[] = 'Вам не будет хватать Силы';
if ($row['intellect']+$gintellect < $inf['need_intellect']) $er[] = 'Вам не будет хватать Интеллекта';
if ($row['knowleadge']+$gknowleadge < $inf['need_knowleadge']) $er[] = 'Вам не будет хватать Знаний';
if ($row['reaction']+$greaction < $inf['need_reaction']) $er[] = 'Вам не будет хватать Реакции';
if ($row['health']+$ghealth < $inf['need_health']) $er[] = 'Вам не будет хватать Здоровья';
if ($row['dodge']+$gdodge < $inf['need_dodge']) $er[] = 'Вам не будет хватать Ловкости';
 
 
 
 
if (count ($er) < 1 && !is_weared ($thing_id)){
 
$power = $inf['give_power'];
$intellect = $inf['give_intellect'];
$knowleadge = $inf['give_knowleadge'];
$health = $inf['give_health'];
$dodge = $inf['give_dodge'];
$reaction = $inf['give_reaction'];
 
$destruction = $inf['give_mf_destruction'];
$accuracy = $inf['give_mf_accuracy'];
$stability = $inf['give_mf_stability'];
$reservation = $inf['give_mf_reservation'];
$breakdown = $inf['give_mf_breakdown'];
 
 
#$hp = $health * 5;
#$give_hp = $hp + $inf['give_hp'];
#$give_psy = $inf['give_psy'];
 
mysql_query ("UPDATE `".table_weapons."` SET weared = '1' WHERE wid = '$thing_id' and owner = '$user_id'");
mysql_query ("UPDATE `".table_users."` SET power = power + $power, intellect = intellect + $intellect, knowleadge = knowleadge + $knowleadge,
health = health + $health,
dodge = dodge + $dodge, reaction = reaction + $reaction,
destruction = destruction + $destruction, accuracy = accuracy + $accuracy, stability = stability + $stability,
reservation = reservation + $reservation, breakdown = breakdown + $breakdown
WHERE uid = '$user_id'"
);
redirect_to ("?page=main&m=inventory");
}
else {
echo "<div id='whp_err' style='color: darkred; font-weight: bold;'>";
foreach ($er as $q){
echo $q."<br />";
}
echo "</div>";
}
 
 
 
}
 


Кусок из библиотеки оружия WarHour

P.s
Сделай подсветку РНР кода что ли smile.gif Если не трудно smile.gif
  • 0

#51 Ilg

Ilg

    geek

  • Root Admin
  • PipPipPipPipPipPipPip
  • 2 717 Сообщений:
  • Time Online: 17d 6h 22m 31s

Отправлено 14 Февраль 2008 - 06:24

да, надо будет включить smile.gif
это был код из парсера реквест контроллера, а это код из библиотеки одного сайта, на основе контроллера.

Syntax Highlighted Code: PHP
 
function authenticate(PHLRequestContext $context)
{
$RQ = PHLCore::get()->request;
 
$u = $RQ->param('string', 'u', 'P', '');
$p = $RQ->param('string', 'p', 'P', '');
 
$user_data = PHLCore::get()->table_admins->executeGetSingleRow(
'select_by_username', array($u));
 
if (count($user_data) == 0) {
$context->global_errors->add(_I('Username is wrong.'));
return false;
}
if (sha1($p) != $user_data['pasword']) {
$context->global_errors->add(_I('Password is wrong.'));
return false;
}
$context->messages->add(_I('User authenticated successfully.'));
return $u;
}
 


у каждого свой стиль и предпочтения smile.gif
я например никогда код sql команд и хтмл код в коде программы не указываю smile.gif я их разделяю, но опять же, на вкус и цвет smile.gif
ты сколько лет програмишь?
  • 0

#52 Ilg

Ilg

    geek

  • Root Admin
  • PipPipPipPipPipPipPip
  • 2 717 Сообщений:
  • Time Online: 17d 6h 22m 31s

Отправлено 14 Февраль 2008 - 06:39

кстати, забыл сказать, ООП я юзаю в библиотеке, но сами сайтеги пишутся тока с функциями smile.gif
  • 0

#53 Эльказ

Эльказ

    PHP Specialist

  • Постояльцы
  • PipPipPipPipPipPip
  • 1 793 Сообщений:
  • Time Online: 5h 33m 54s

Отправлено 14 Февраль 2008 - 06:43

Ilg, ну по поводу разделения - на вкус и цвет, тут ты прав ) Просто не люблю разделять SQL-команды, html, css, js. У меня идет разделение по модулям. К примеру библиотека новостей. Так? В ней прописываются процедуры (функции), которые используются в модуле. Это для меня очень удобно, и редактировать легко. Т.е в модуле новостей что-то такое:

Syntax Highlighted Code: PHP
 
include_once ("library/news.inc.php");
$page = (int) $_GET['page'];
$category = (int) $_GET['cat'];
$per_page = 10; // сколько новостей на страницу
 
if (!empty ($page) && !empty ($category) && $page > 0 && $cat > 0){
show_news ($category, $per_page);
}
 

Вот как-то так smile.gif

Я HTML изучал с 12-и лет (курсы при IATP были), потом сам взялся за изучение PHP, C++ и Java. Т.е где-то 3-3.5 года.
  • 0

#54 Ilg

Ilg

    geek

  • Root Admin
  • PipPipPipPipPipPipPip
  • 2 717 Сообщений:
  • Time Online: 17d 6h 22m 31s

Отправлено 14 Февраль 2008 - 06:52

Цитата
не люблю разделять SQL-команды, html, css, js


мне кажется удобнее все таки разделять, потому что сопровождать проще smile.gif но это тока мое имхо. конечно когда клепаешь сайт из 2-3 паг можно и не париться, но чем больше страничек и модулей, тем больше гимора. стиль где то поменяется, лейаут страницы изменится, или фиг знает еще чего. ну в общем, работая, кому как легче так и делает smile.gif

ну то что ты показываешь это тож разделение, тока я не про это разделение говорю, делить по модулям тоже хорошо и верно, я про константы в коде, скл команды, и хтмл и цсс коды в пхп коде smile.gif
  • 0

#55 Эльказ

Эльказ

    PHP Specialist

  • Постояльцы
  • PipPipPipPipPipPip
  • 1 793 Сообщений:
  • Time Online: 5h 33m 54s

Отправлено 14 Февраль 2008 - 06:54

Ilg, Ну стиль в css прописывается. У меня warhour написан разделением на модули. Основной дизайн игры прописан в top.php (верхний фрейм). Туда же подключаются и модули. Т.е к примеру игрок перешел на природу - подключается модуль природы smile.gif


Цитата
работая, кому как легче так и делает

Согласен smile.gif
  • 0

#56 xRySt

xRySt

    Новичок

  • Читатели
  • Pip
  • 18 Сообщений:
  • :

Отправлено 25 Июнь 2009 - 07:53

Сам Я предпочитаю разделять) Пользуюсь шаблонизатором Smarty!
  • 0

#57 Эльказ

Эльказ

    PHP Specialist

  • Постояльцы
  • PipPipPipPipPipPip
  • 1 793 Сообщений:
  • Time Online: 5h 33m 54s

Отправлено 22 Январь 2011 - 03:56

Получаем статусы Twitter для конкретного человека, записываем данные в кэш и потом уже читаем оттуда. Вообще конечно нужно по cron'у дёргать, но для меня пока и так годится. Статусы получаем в json, потом всё это дело переводим в объект. У меня правда оно иногда падает, но я ещё не знаю почему smile.gif Просто иногда $Twitter равен нулю.

Syntax Highlighted Code: PHP
 
$twitterInfo = 'http://api.twitter.com/1/statuses/user_timeline.json?screen_name=Akhundzade';
$twitterCache = CACHE . '/twitter.cache';
 
if (!is_file ($twitterCache) || (filemtime ($twitterCache) + 3600) < time()){
$Twitter = file_get_contents ($twitterInfo);
if (strlen ($Twitter) > 100){
unlink ($twitterCache);
file_put_contents ($twitterCache, $Twitter, FILE_APPEND);
}
} else {
$Twitter = file_get_contents ($twitterCache);
}
 
$Twitter = json_decode ($Twitter);
 
$twitterText = '';
$twitterCounter = 0;
 
if (!is_null ($Twitter)){
while ($twitterText == ''){
if ($Twitter[$twitterCounter]->in_reply_to_screen_name == ''){
$twitterText = $Twitter[$twitterCounter]->text;
$twitterAvatar = $Twitter[$twitterCounter]->user->profile_image_url;
}
$twitterCounter++;
}
} else {
$twitterText = 'Twitter gateway down...';
$twitterAvatar = 'http://a3.twimg.com/profile_images/1129086105/photo_normal.jpg';
}
 

Это сообщение было изменено Эльказ: 22 Январь 2011 - 03:58

  • 0

#58 Ilg

Ilg

    geek

  • Root Admin
  • PipPipPipPipPipPipPip
  • 2 717 Сообщений:
  • Time Online: 17d 6h 22m 31s

Отправлено 22 Январь 2011 - 04:25

Цитата
Просто иногда $Twitter равен нулю


socket timeout?
  • 0

#59 Эльказ

Эльказ

    PHP Specialist

  • Постояльцы
  • PipPipPipPipPipPip
  • 1 793 Сообщений:
  • Time Online: 5h 33m 54s

Отправлено 22 Январь 2011 - 08:01

Ilg, не знаю. Вообще как бы не должно быть, по идее. Лень проводить дополнительные тестирования smile.gif
  • 0





0 пользователей читают этот форум

пользователей, гостей, скрытых