Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 24.04.2013, 10:40
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

vostok, ну в одинарных кавычках код вроде быстрее работает.
Ответить с цитированием
  #12 (permalink)  
Старый 24.04.2013, 11:07
Интересующийся
Отправить личное сообщение для vostok Посмотреть профиль Найти все сообщения от vostok
 
Регистрация: 19.11.2012
Сообщений: 18

В вашем случае нет. В коде нет переменных внутри "".
Речь не идет об апострофах обрамляющиx параметры create_function
В любом случае это копейки, можете и оставить. У меня вообще сомнения как этот код
работает, так как он выглядит вообще не валидно для php (нет возможности потестить),
но если у вас работает - значит create_function его понимает.
Для скорости нужно оптимизировать алгоритм а не исходники имхо конечно.
Ответить с цитированием
  #13 (permalink)  
Старый 24.04.2013, 11:49
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

vostok, просто я собираю соц. сеть, и делаю там фотоальбомы: http://mkheroes.p.ht/user/?name=Ruslan_xDD&photo=1
При открытии фотоальбома в javascript приходит массив со всеми датами всех фотографий.
В php сначала из mySQL получаем все даты, а потом с помощью цикла создаём массив с датами, массив для JS.
Ну и получается, что в цикле каждый раз идёт обращение к ф-ции dates. Вот я и думаю, быстро оно работает или нет, ведь фотографий то может быть и 100, тогда эта ф-ция будет вызвана 100 раз.

Так что, я не знаю как сделать лучше, а точнее, чтобы работало быстрее. Может дату разбивать на массив с помощью split()?
Ответить с цитированием
  #14 (permalink)  
Старый 24.04.2013, 12:37
Интересующийся
Отправить личное сообщение для vostok Посмотреть профиль Найти все сообщения от vostok
 
Регистрация: 19.11.2012
Сообщений: 18

1. На странице можно отдавать не сразу все фото а частями, допустим по 15 (LIMIT 0, 15) на страницу и сделать нумерацию страниц (pagination). Уже функция вызовется не 100 раз.

2. Обратите внимание на функцию array_walk() . Уже не придется писать цикл.

Откажитесь от регулярных выражений. Посмотрите в сторону строковых функций. Выбирайте.

Цитата из документации:
"Если вам не нужна мощь регулярных выражений, вы можете выбрать более быстрые (хоть и простые) альтернативы наподобие explode() или str_split()."

split() c версии PHP 5.3.0 считается устаревшей. explode() таковой не считается.

К слову в движках, фреймворках вызов 2000 функций - не предел.
Ответить с цитированием
  #15 (permalink)  
Старый 24.04.2013, 13:28
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

мдауж... что-то у вас все заумно, есть же простые варианты в PHP:
function convertDate($string) {
	$months = array('Января', 'Февраля', 'Марта', 'Апреля', 'Мая', 'Июня', 'Июля', 'Августа', 'Сентября', 'Октября', 'Ноября', 'Декабря');
	return date('j '.$months[date('n', strtotime($string)) - 1].' Yг. в H:i', strtotime($string));
}

echo convertDate('2013-04-02 11:22:00');
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #16 (permalink)  
Старый 24.04.2013, 15:29
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

devote, а Вы можете помочь мне написать такую ф-цию.
Есть например переменная $timezone - часовой пояс, от -11 до 11, её значение у каждого пользователя разное, в зависимости от того, какой часовой пояс пользователь выбрал при регистрации.
Часовой пояс на сервере: UTC-4 (как в Нью-Йорке).

Нужно, чтобы ф-ция возвращала строку вида '15 Апреля 2013 г. в 10:00', а если число сегодняшнее, то возвращало 'Сегодня в 10:00', или если число вчерашнее: 'Вчера в 10:00'.
Время должно соответствовать часому поясу выбраного пользователям.
Тоесть: если на сервере часовой пояс -4, то к времени нужно прибавить 4 часа + часовой пояс пользователя. Как-то так.
Входящая строка в ф-цию выглядит следующим образом: 2013-04-02 11:22:00.
Буду очень благодарен за такую ф-цию! Я то сам могу такую написать, но у меня она выйдет не так как у Вас, у меня она будет сделана криво и выполняться дольше.
Ответить с цитированием
  #17 (permalink)  
Старый 24.04.2013, 18:47
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

function convertDate($string, $timezone = 'UTC') {
	$months = array(
		'Января','Февраля', 'Марта', 'Апреля', 'Мая', 'Июня',
		'Июля', 'Августа', 'Сентября', 'Октября', 'Ноября', 'Декабря'
	);

	$time = strtotime($string);
	$timeZoneShift = ($time - strtotime($string.' '.$timezone));
	$currentTime = time() + $timeZoneShift;
	$time = $time + $timeZoneShift;
	$firstToken = $time - strtotime('00:00:00', $currentTime) >= 0
		? 'Сегодня' : ($time - strtotime('-1 day 00:00:00', $currentTime) >= 0
		? 'Вчера' : 'j '.$months[date('n', $time) - 1].' Yг.');

	return date($firstToken.' в H:i', $time);
}

echo convertDate('2013-04-23 15:59:59', 'GMT+4');
вторым параметром, временная зона пользователя
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #18 (permalink)  
Старый 25.04.2013, 06:19
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

devote, во, спасибо большое! А при вывове это ф-ции 100 раз например, большой нагрузки на сервер не будет?
Ответить с цитированием
  #19 (permalink)  
Старый 25.04.2013, 10:26
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от Ruslan_xDD
А при вывове это ф-ции 100 раз например, большой нагрузки на сервер не будет?
сомневаюсь.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переменная как значение функции. Jurasmi Общие вопросы Javascript 7 22.04.2010 12:45
Переменная JS как индекс в PHP mirage009 Серверные языки и технологии 4 28.02.2010 21:01
как проверить, есть ли переменная Аскар Общие вопросы Javascript 3 04.01.2010 17:09
Строковая переменная как имя объекта MaxLazar Общие вопросы Javascript 4 06.10.2009 00:21
Переменная от переменной или как к имени переменной конкатенировать значение другой Aderba jQuery 5 12.11.2008 15:25