да нет. я в курсе как устроено представление чисел
опишу подробнеее. смотрите, данное число формируется на клиенте яваскриптом. если сделать алерт - отобразится положительное число. потом оно отправляется на сервер аяксом. если во время приема сериализовать число и сохранить в файл - оно будет положительным. причем перед ним будет буковка "i" (вспомните формат сериализованных данных), т.е. воспринимается оно как число.
если сделать var_dump - покажет тип float. а если сделать приведение к INT - станет отрицательным. Почему так?
речь идет о числах бОльших 2 147 483 647
Разобрался, проблему решил, но сути так и не понял.
в общем дело было в том что при подстановке в запрос данные "чистились" банальным приведением к INT
(int)$number
и если число содержало в 32 бите единицу (т.е. было больше 2 147 483 647) то оно трактовалось как отрицательное.
Убрав приведение типа и сделав поле в БД unsigned проблема была решена. данные заносятся корректно.
Но вопрос для меня остается открытым, почему число вдруг становилось отрицательным?
Такая вот трабла. Есть поле с уникальным ключом. INT. Числа в нем могут быть разные от "0" до "4 294 967 295", но уникальные.
Когда я делаю импорт в эту таблицу (php-скриптом) на локальном сервере (win8 x64, php5.3.22, MySQL5.5.30) то все проходит отлично. Данные вносятся корректно, без ошибок.
Когда проделываю все то же самое на хостинге (x86_64-unknown-linux-gnu, PHP5.3.14, MySQL5.1.54) вываливается ошибка, что такой ключ существует (в то время, как его существовать не может, например при заливке первого блока данных вв чистую таблицу). И ругается на значение "2 147 483 647" (половина от максимум возможного).
Если убрать UNIQUE с поля, то данные вносятся, но, разумеется некоректно. Все числа бОльшие "2 147 483 647", записываются как "2 147 483 647". upd: например число "-666 592 868" (так оно у меня отображается в HeidiSQL) превращается и записывается как пресловутое "2 147 483 647".
на порции разбито. я писал об этом. порция вносится - страница обновляется, вносится следующая.
Спасибо за идеи, буду пробовать.
И еще посоветовали использовать препарированные запросы (юзаю PDO), т.к. запрос один и тот же, только меняются данные. Это даст положительный результат?
В базу нужно изредка (два-три раза в день) нужно вносить\обновлять большое количество данных. До 10 000 запросов. Скрипт не успевает их выполнить, отваливаясь по таймауту => было сделано разделение на части, обновление по 500 строк, с автоматическим перезапуском скрипта (строка - в терминологии таблиц базы данных). На каждую строку проверяется наличие ее в базе (по индексированному INT полю), если строка присутствует - выполняется UPDATE запрос, если нет - INSERT. Т.е. получается даже 20К запросов - 10К селектов, и столько же вставок\обновлений.
Периодически PDO выбрасывает исключение, что не может подключится к базе из-за того, что хостер временно блокирует доступ при превышении лимитов. Соответственно данные полностью не вносятся.
Таблицы InnoDB.
Как бы это дело разрулить, куда копать?
я понимаю )
дело в том, что службы вообще нет.
ситуация: есть комп на котором ничего не установлено. чистая windows7. вставляю туда свою флешку выполняю команду
нет.
Это работает когда индеец ставится через инсталлятор и регистрируется как служба windows.
у меня же он запускается в консольном режиме
соответственно ответ вашей команды:
Неправильно имя службы
Сконфигурировал сервер (Apache+php+mysql). Разместил все это дело на флешке. Ношу с собой. Портативно, удобно. Но есть проблема. Не знаю как остановить апач.
запускается не как сервис windows
Запускаю с помощью батника:
Apache22\bin\httpd.exe -f "Apache22\conf\httpd.conf"
а как написать батник для остановки сервера?
-k stop не работает
пока прибиваю процессы через диспетчер. но хочется написать батник.
зы. denwer и иже с ним не предлагайте, есть ряд причин не использовать такие сборки.
Есть такая замечательная приблуда для CodeIgniter - Grocery CRUD. Здорово облегчает и ускоряет написание админок на этом фреймворке. Хочу спросить, может быть есть подобные библиотеки\классы не привязанные к какому-либо фреймворку? Пропытка адаптировать Grocery не увенчалась успехом, а гугл не понимает, чего я от него требую, - не могу сообразить какой запрос писать - выдает один шлак. Поделитесь ссылками, если кто знает что-то подобное.
есть таблица пользователей. в ней есть поле `role`
есть еще три таблицы
`permission` - перечисление различных прав (доступ в админку, создание, редактирование и т.п.),
`roles` - роли пользователей (Администарторы, Зарегистрированные, Модераторы и т.п.),
`perms_of_roles` - отношения ролей и соответствующих им прав.
if($user->authorized('edit_article')){ разрешаем доступ }
if($user->authorized('access_admin')){ разрешаем доступ }
В целом устраивает, хоть и кажется что что-то не так, но при каждом запросе приходится дергать данные из трех таблиц (permission, roles, perms_of_roles) и составлять соответствие прав доступа текущему пользователю.
Массив соответствий выглядит так:
Здесь ключи массива - это ID роли из таблицы `roles` Вопроса два.
1. можно ли составить запрос получения пользователя из таблицы `users` так, чтобы в ответе, помимо полей этой таблицы было еще одно поле с массивом прав доступа для роли этого пользователя.
2. Или разграничение прав делается как-то по другому?