![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 10 Всего: 71 |
так это перебор получается?
-------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
| capitan |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 602 Регистрация: 27.2.2005 Где: Москва Репутация: 9 Всего: 13 |
А чем не устраивает? У вас где данные лежат по датам договоров и сроках? Если в базе, тогда просто в таблицу добавляем поле, где пишем дату окончания договора. При заполнении, считаем и пишем. Какие проблемы? Зато считаем все точно, учитывая все, что угодно. Это сообщение отредактировал(а) capitan - 24.1.2014, 14:43 |
|||
|
||||
| Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 10 Всего: 71 |
capitan, так проблем нет
с перебором я написал для себя это: (вырезал из кода, т.ч. три метода)
в условие можно и праздники впихнуть смело. Гонял код, вроде всё корректно отдаёт. PS Код скорее всего не будет работать PHP 5 < 5.3.0 Это сообщение отредактировал(а) Gold Dragon - 24.1.2014, 15:06 -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
| capitan |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 602 Регистрация: 27.2.2005 Где: Москва Репутация: 9 Всего: 13 |
Каждую задачу нужно рассматривать с позиции целесообразности
|
|||
|
||||
| Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 10 Всего: 71 |
-------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
| capitan |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 602 Регистрация: 27.2.2005 Где: Москва Репутация: 9 Всего: 13 |
Нужно тестить, поидее должно работать:
Это сообщение отредактировал(а) capitan - 24.1.2014, 16:58 |
|||
|
||||
| Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 10 Всего: 71 |
Это
выдаёт 20.01.2014, хотя должно 17-е Это сообщение отредактировал(а) Gold Dragon - 24.1.2014, 19:44 -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
а так?
P.S. слегка отформатировал и добавил 2013 год Это сообщение отредактировал(а) ksnk - 24.1.2014, 22:03 -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
Если в моем коде заменить strtotime('+1 day'... на +=60*60*24, и поменять ключики массива праздников на их числовые значения с выкидыванием формирования ключа, то работать будет в 4 раза быстрее.
Вообще, о чем такая задача? На своей машинке - ноутбук с i3, 1000 200-дневных периодов посчиталось за 7 сек (исходно опубликованный - 30 сек). Как показывает практика - сервера (в моей доступности) решают такие задачи в 5-10 раз быстрее. Может быть и хватит скорости? -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| capitan |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 602 Регистрация: 27.2.2005 Где: Москва Репутация: 9 Всего: 13 |
не учел последние выхи на неделе. Делаем так: строку:
меняем на:
Теперь должно работать. |
||||||||
|
|||||||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 26 Всего: 101 |
Gold Dragon, если учитывать все обстоятельства, то как-то так
http://ideone.com/mIyRNv Добавлено через 1 минуту и 3 секунды с базой попроще будет ;-) |
|||
|
||||
| Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 10 Всего: 71 |
протестировал малость..
Тест:
мой код: 250 запросов 50 дней - 3.78722 250 запросов 100 дней - 7.81845 500 запросов 50 дней - 7.61444 500 запросов 100 дней - 15.58989 код baldina: 250 запросов 50 дней - 0.016 250 запросов 100 дней - 0.011 500 запросов 50 дней - 0.022 500 запросов 100 дней - 0.022 Вот вам и проблемы перебора.. Осталось проверить правильность Добавлено через 12 минут и 41 секунду baldina, 2014-01-04 10 дней всё таки 17.01 а не 20.01 -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 26 Всего: 101 |
||||
|
||||
| Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 10 Всего: 71 |
ну вообще-то нет. "Шесть частей, но пять распилов"
1 2 3 4 5 3---4---5---6---7---8 -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 26 Всего: 101 |
ну тады вычти один день. сможешь? ;-)
|
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |