PHP.SU

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

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

> Найдено сообщений: 359
Hapson Отправлено: 25 Ноября, 2013 - 21:11:23 • Тема: Перевод даты в time() • Форум: Вопросы новичков

Ответов: 7
Просмотров: 447
GEN_18 пишет:
И второй вопрос, в каком формате лучше всего записывать дату в базе?

В том, в котором удобно работать. Что мешает записать метку времени в поле INT UNSIGNED ?
Hapson Отправлено: 25 Ноября, 2013 - 21:09:21 • Тема: Вынужденный переход с php5.2 на php5.4 • Форум: Вопросы новичков

Ответов: 11
Просмотров: 393
D-RON-D пишет:
Тут ругается на отсутствие $_GET['action'].

D-RON-D пишет:
Тут ругается на отсутствие $_GET['p'].

Блин... Ты не заметил что в твоих вопросах уже есть ответ?
По всей логике, прежде чем проверить, есть ли что-то в переменной, не мешало бы проверить, а переменная вообще есть?
Если ты используешь массивы GET, POST, SESSION..., то сначала смотришь, есть ли в них такая ячейка, потом смотришь, в ячейке то, что тебе нужно? И если все ОК, тогда используешь эту ячейку (переменную) по назначению. А так ты используешь переменную, в которой не известно что.
IllusionMH пишет:
дальше учите что такое тренарный оператор

Господи! Какой тернарный? Тут надо учить isset и empty Улыбка
Hapson Отправлено: 24 Ноября, 2013 - 16:16:58 • Тема: Работа с числами более 0x7FFFFFFF • Форум: Вопросы новичков

Ответов: 15
Просмотров: 788
OrmaJever пишет:
чисто теоретически на многих хостингах стоит 64 битный линукс, ну и для тестов я не думаю что большая проблема поставить вин64.

Код должен быть кроссплатформенным, 32 битные системы еще не скоро вымрут
(Добавление)
собственно работать с числами до 0xFFFFFFFF включительно можно, но не нужно, так как это костыли.
Для примера можете попробовать, кому интересно
PHP:
скопировать код в буфер обмена
  1.  
  2. $n = (int)0xFFFFFFFF;
  3. echo $n;
  4. $n = sprintf("%u", $n);
  5. echo $n;
  6.  
Hapson Отправлено: 23 Ноября, 2013 - 20:10:13 • Тема: Работа с числами более 0x7FFFFFFF • Форум: Вопросы новичков

Ответов: 15
Просмотров: 788
блин все равно лажа...
Сдвиг на строке работает, а XOR нет.
Hapson Отправлено: 23 Ноября, 2013 - 17:45:01 • Тема: Работа с числами более 0x7FFFFFFF • Форум: Вопросы новичков

Ответов: 15
Просмотров: 788
OrmaJever пишет:
если не 32 битная версия

вот если бы не если...
Hapson Отправлено: 23 Ноября, 2013 - 17:02:44 • Тема: Работа с числами более 0x7FFFFFFF • Форум: Вопросы новичков

Ответов: 15
Просмотров: 788
teddy пишет:
unsigned это значит что числа в колонке будут больше либо рано нулю

это я знаю
teddy пишет:
так же как и с обычными... php понимает что это число даже если у него строковый тип

Нет
PHP:
скопировать код в буфер обмена
  1.  
  2. $num = 0x7FFFFFFF;
  3. echo $num .'<br />'; // 2147483647
  4. $shift = $num >> 8;
  5. echo $shift .'<br />'; // 8388607
  6.  
  7. $num = 0xFFFFFFFF;
  8. echo $num .'<br />'; // 4294967295
  9. $shift = $num >> 8;
  10. echo $shift .'<br />'; // -1
  11.  

Мелкий пишет:
В PHP int - всегда signed.

В том и проблема
caballero пишет:
например для автоинкремента

CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. CREATE TABLE `integer` (
  3.         `id` INT(10) NOT NULL AUTO_INCREMENT,
  4.         `name` CHAR(50) NOT NULL,
  5.         PRIMARY KEY (`id`)
  6. )
  7.  

работает
(Добавление)
caballero пишет:
использовать float

PHP:
скопировать код в буфер обмена
  1.  
  2. $num = 0x7FFFFFFF;
  3. echo $num .'<br />'; // 2147483647
  4. $shift = $num >> 8;
  5. echo $shift .'<br />'; // 8388607
  6.  
  7. $num = (float)0xFFFFFFFF;
  8. echo $num .'<br />'; // 4294967295
  9. $shift = $num >> 8;
  10. echo $shift .'<br />'; // -1
  11.  

Неа.
Нужно выполнять побитовые операции с такими числами. Переставлять биты и т.п...
(Добавление)
teddy пишет:
так же как и с обычными... php понимает что это число даже если у него строковый тип

Блин... teddy ты прав
PHP:
скопировать код в буфер обмена
  1.  
  2. $num = 0x7FFFFFFF;
  3. echo $num .'<br />'; // 2147483647
  4. $shift = $num >> 8;
  5. echo $shift .'<br />'; // 8388607
  6.  
  7. $num = (string)0xFFFFFFFF;
  8. echo $num .'<br />'; // 4294967295
  9. $shift = $num >> 8;
  10. echo $shift .'<br />'; // 8388607
  11.  


уж такого я никак не ожидал
(Добавление)
Ну что, всем спасибо, особенно teddy
Просто я писал функцию шифрования чисел в буквенную строку. В теле функции много побитовых операций, и вот столкнулся с траблом больших чисел.
Всегда старался переменные явно приводить к числам, перед тем как совершать с ними мат.операции, но тут вот оно как...
PHP странный язык...
Hapson Отправлено: 23 Ноября, 2013 - 16:07:39 • Тема: Работа с числами более 0x7FFFFFFF • Форум: Вопросы новичков

Ответов: 15
Просмотров: 788
Всем привет.
Вот на какой косяк я наткнулся сейчас.
Есть к примеру в базе таблица "integer" с одним единственным полем: "id" - INT(10) UNSIGNED
записал я в это поле значение более 0x7FFFFFFF, дальше попытался выбрать это значение в скрипте.
PHP:
скопировать код в буфер обмена
  1.  
  2. $int = "select `id` from `integer`";
  3.  
  4. var_dump($int); // string(10) "4294469992"
  5. var_dump((int)$int); // int(2147483647)
  6.  


Теперь два вопроса:

1) на кой черт в MySQL поле unsigned?
2) как работать с такими числами в php?

И еще
Hapson Отправлено: 18 Ноября, 2013 - 19:32:47 • Тема: О сессиях • Форум: Вопросы новичков

Ответов: 66
Просмотров: 2007
PS
А в сессии можно хранить че хош, только позаботься о безопасности сессионной куки и никогда не передавай session_id через query_string. По поводу тормозов сессий (файлов сессий) на "высоконагруженных проектах" (слово-то какое...), ниче не скажу. Но многие говорят, что тормоза есть. Не зря ведь есть алгоритмы автоматического создания директорий, чтобы много файлов не скапливалось в одной папке. Но и много директроий тоже не есть хорошо, тут говорят нужно искать золотую середину. Но я ее пока не искал - не нужна пока Улыбка
(Добавление)
likvidator пишет:
Ну вы конечно можете втирать заказчику или при приеме на робу,что процедурка - это не какашка,а вполне себе юзабельный стиль программирования,но я бы не советовал

Да мне просто пока плевать на заказчиков. Я пока учусь писать хорошо, и чтоб работало везде и быстро. Придет время и классы заюзаю, куда ж без них. Как сказала одна моя знакомая (хороший программист) - использовать ООП везде и всюду, все равно что на танке за огурцами ездить. И оно так и есть.
А заказчики да - им пофиг на реалии, им надо чтоб было "расширяемо", только в какое место расширять...
Hapson Отправлено: 18 Ноября, 2013 - 19:22:53 • Тема: О сессиях • Форум: Вопросы новичков

Ответов: 66
Просмотров: 2007
likvidator пишет:
ну тут ваша темка была,вы к этим файлам так же не равнодушны были_))

Да, было такое. Но мне объяснили, что БД не нужно бояться, ею нужно пользоваться. Разумно конечно пользоваться
(Добавление)
likvidator пишет:
Ну надо же развиваться,навык улучшать,пока вроде получается


Ну надо же развиваться,следовать моде ,пока вроде получается
Hapson Отправлено: 18 Ноября, 2013 - 19:20:31 • Тема: О сессиях • Форум: Вопросы новичков

Ответов: 66
Просмотров: 2007
likvidator пишет:
Потому чт ос процедурками я уже наигрался более чем

Ну, кому что ближе. Я начал писать на классах, но потом переписал на функции и доволен вобщем-то.
Hapson Отправлено: 18 Ноября, 2013 - 19:15:24 • Тема: О сессиях • Форум: Вопросы новичков

Ответов: 66
Просмотров: 2007
likvidator
А зачем вообще тогда база? Можно все хранить в файлах... незнаю, .ini .dat .txt .blabla...
Чем база хуже сессии? Мне кажется наоборот.
Вот я тоже первый сайт пишу - блог. Сессии не использую вообще, нет необходимости. Для хранения данных юзера есть куки. Нет, я не храню в куках данные пользователя, я там храню тикет, по которому вытаскиваю из базы данные... да, да, каждый раз вытаскиваю. Ты наверно забыл (не знал) про кэширование? Если ты каждый раз делаешь один и тот же запрос, то тебе отдаются данные из кэша, а сервер БД в это время курит. Попробуй в страшном черном окне сделай одинаковый запрос несколько раз, и сравни время первой выборки и последующих. Я те сразу скажу, время последующих выборок будет равно 0.00.
Сессия - это кука. Тебе нужна кука. Зачем стартовать сессию ради куки?
Я даже сообщения между header() передаю через базу. Что плохого? Сгенерировал сообщение, кинул его в практически пустую таблицу, в куку или в query_string кинул id сообщения. Дальше достал сообщение, показал и удалил (к вопросу о передаче данных между редиректами).
База - это не только хранилище постоянных данных. Что мешает передавать через нее временные данные?

PS Кстати, говоришь тестовый сайтик пишешь? А ООП зачем? Напиши на функциях, а ООП затронешь тогда, когда поймешь, что тебе реально нужны классы. Простой сайт на функциях будет жрать гораздо меньше памяти и работать будет быстрее.
Hapson Отправлено: 17 Ноября, 2013 - 22:59:11 • Тема: Выборочное наполнение сайдбара • Форум: Вопросы новичков

Ответов: 5
Просмотров: 292
etoYA
Не, я пока без классов обхожусь.
DelphinPRO
Ну да, как-то так. Вчера написал некое подобие контроллера модулей. В шаблоне оказалось это
PHP:
скопировать код в буфер обмена
  1.  
  2. <div id="sidebarBlock">
  3.         <?PHP
  4.         foreach($SIDEBAR as $func){$func();}
  5.         ?>
  6. </div>
  7.  

Сделал таблицу:
mod_name | activation | position | param
В папке каждого модуля есть файл run.php, в файле есть функция runModName()
Контроллер смотрит в таблицу и выбирает имена модулей, у которых activation = 1. Далее контроллер проверяет наличие функции runModName() (runUsers, runLastArt, runMenu...) и дергает в цикле все эти функции. Стартовые функции модулей отрабатывают и возвращают имена функций для вывода их данных. Контроллер собирает имена функций для вывода и складывает их в массив $SIDEBAR.
В шаблоне эти функции дергаются в цикле и выводят че у них есть. То есть контроллер передает так сказать представления с готовыми данными в шаблон, где все это остается только нарисовать.
Короче работает, но допиливаю еще, как-то пока не очень нравится.
(Добавление)
С позициями пока тоже не определился. Пока все отрисовывается в колонке сайдбара в соответствии с позициями из поля position.
Hapson Отправлено: 17 Ноября, 2013 - 22:45:59 • Тема: Дополнительная информация о пользователе • Форум: Вопросы новичков

Ответов: 4
Просмотров: 241
Ubuntu
Разрешение экрана? А пых это может?
На самом деле кроме юзер агента и IP ничего у тебя нет, если речь идет об авторизации. Да и то, эти два параметра также не гарантированы.
Однако вариантов у тебя масса - главное фантазия. Если хочешь предотвращать попытки долбежки, то пиши какой-то свой алгоритм, как ты будешь блочить того, кто явно не по-человечески хочет войти. У тебя есть IP, UserAgent, логин, пароль, время между попытками входа и т.д и т.п...
Hapson Отправлено: 15 Ноября, 2013 - 18:51:04 • Тема: Измерение памяти и времени в PHP • Форум: Пользовательские функции

Ответов: 24
Просмотров: 2420
Ch_chov пишет:
Hapson, в время работы скрипта функции берут память и освобождают её. Всю эту динамику вы этим кодом не сможете отследить. Да и не требуется это в вашем случае. Обычно всех интересует время генерации страницы и максимальный объём памяти, который выделялся для скрипта. Для этих целей ваш способ вполне подойдет.

Да, теперь понял. Функция сожрала, функция освободила.
Сейчас проверил. Добавлял внутрь функции переменную и запускал функцию в цикле.
С одной и с двумя переменными Memory не меняется, а Max Memory увеличивается.
Значит действительно, memory_get_usage бесполезна
Hapson Отправлено: 15 Ноября, 2013 - 18:45:50 • Тема: Измерение памяти и времени в PHP • Форум: Пользовательские функции

Ответов: 24
Просмотров: 2420
EuGen пишет:
Hapson пишет:
А вот Memory... что-то я сомневаюсь, что она врет. Здесь подсчитывается, сколько памяти было выделено во время выполнения скрипта. И в эту обертку попадают как все телодвижения, так и все определения функций, классов и прочее.

Нет, это не так - и Вы видели это на примере, который сами же и привели. Такой способ не учтёт ничего, что определено внутри окружения функций/методов

Ну тогда я не понимаю, откуда берется эта цифра
http://clip2net[dot]com/s/6bn1FT
У меня все действия происходят до подключения шаблона. Все происходит внутри функций. Наружу выходят только те переменные, которые нужно вывести в шаблоне.
Неужто 300 кБ используется для нескольких переменных и штук 10 подключенных черех include файлов?

Страниц (24): В начало « ... 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