[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Передача данных скрипту не через переменные
supaplex777
Пишу некоторое мобильное клиентское приложение которое будет мучить php-скрипт через GPRS, и специфика, мне кажется, делает уместной любую экономию исходящих от клиента данных. Я для себя описал некоторый "формат" или "протокол" по которым будут общаться клиент и сервер и получилось что клиент, в основном, будет передавать числовые данные. Было бы приятно, если бы можно было передавать числа побайтно (8 бит на байт). Однако, как известно, принято без извращений передавать только алфавитно-цифровые символы и знак подчеркивания (26*2+10+1=63шт, math.log(63,2)~6 бит на байт), байт, не попадающий в этот диапазон, передаётся как 3 байта (math.log(256-63,2)/3~2.5 бит на байт), и , в последствии, эффективность передачи составила бы 6*63/256+2.5*(256-63)/256<3 бит на байт. Кажется, даже отсылать числа в десятичном представлении лучше получится (math.log(10,2)>3), ведь 3х байтовые знаки портят картину.
Ну, я не берусь за математичность всего, что я сверху навертел, если что, то я не совсем проснулся. Самое главное, что отсылать integer'ы и прочее так как они представлены в памяти неэкономно выходит и самый лучший метод, который мне идёт в голову - отсылка чисел набором алфавитно-цифровых знаков гадок своей противной нехваткой до 2**6.
Могу себе легко позволить любой способ отсылки (не веб форма же у меня).
Короче: кто знает, как компактно можно отсылать цыфири к php-скрипту, объясните, пожалуйста.



Спустя 24 минуты, 30 секунд (28.11.2009 - 01:52) S{oRpiO написал(а):
непомню точно но вроде как все данные идут через переменные

Спустя 1 день, 20 часов, 57 минут, 56 секунд (29.11.2009 - 22:50) supaplex777 написал(а):
Нет, переменные можно не использовать, а вносить данные в строку запроса после символа ? и тогда данные окажутся в переменной $QUERY_STRING в скрипте, но это неважно. Я спрашиваю, есть ли хороший способ сжато передавать числа в http-запросе?

Спустя 18 минут (29.11.2009 - 23:08) sergeiss написал(а):
Цитата (supaplex777 @ 29.11.2009 - 23:50)
Я спрашиваю, есть ли хороший способ сжато передавать числа в http-запросе?

Ну, давай подумаем вместе smile.gif "Упаковать" числа можно будет. Но ты будешь тратить ресурсы на запаковку-распаковку. И при пересылке тоже будут лишние байты. Которые могут даже перевесить то, что ты упаковал...
Вот, что приходит в голову.
Если мы передаем целое число, то в памяти компа оно занимает всего 4 байта. А записать там можно число от −2 147 483 648 до 2 147 483 647, т.е. числа могут занимать до 11 байт. Если взять "внутренние" 4 байта, то для их отправки надо будет их разбить на полу-байты, которые можно представить в виде 16-ричных чисел. Таким образом, получаем, что нам надо отправить 8 байт.
Вывод. Если числа менее 8 байт (знаков), т.е. не более 99 999 999 (на 1 меньше 100 млн), то выгоднее их отправлять как простые числа, без упаковки.

Вопрос: юзеры часто будут отправлять такие большие числа? И не проще ли передавать их просто, как они есть, в их десятичном представлении?

Спустя 5 дней, 3 часа, 7 минут, 35 секунд (5.12.2009 - 02:16) supaplex777 написал(а):
Это служебные числа - сходу скажем, id пользователя который лучше генерировать случайно из большого диапазона. Настали кнечно времена, когда 1000 байт или 10 - слабая разница даже в gprs и лучше теперь делать код проще для себя, любимого, которому впоследствии придётся голову ломать - как это я англицким алфавитом хотел цифры передавать.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.