Сейчас на форуме: (+2 невидимых)

 eXeL@B —› Оффтоп —› Проблема отрицательных чисел на PHP.
Посл.ответ Сообщение


Ранг: 450.3 (мудрец), 13thx
Активность: 0.20
Статус: Участник

Создано: 27 декабря 2009 22:49
· Личное сообщение · #1

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

Code:
  1. <?
  2. $a=0x57E1F7BC ^ 0x9502ACEA;
  3. echo $a;
  4. ?>


Результат у одного хостера -1025287338, у другого 3269679958. Если вывожу число через dechex, то результат одинаковый. Первый вариант с отрицательным числом для меня правильный, ибо переменная с этим числом далее не раз используется в расчётах, например складывается с другой, а соответственно общий результат получается разным.



Ранг: 114.8 (ветеран), 41thx
Активность: 0.10
Статус: Участник

Создано: 27 декабря 2009 23:37
· Личное сообщение · #2

этож вроде тот же результат, но в беззнаковой форме выводится)

ToBad пишет:
например складывается с другой, а соответственно общий результат получается разным.

как например?




Ранг: 450.3 (мудрец), 13thx
Активность: 0.20
Статус: Участник

Создано: 28 декабря 2009 00:19
· Личное сообщение · #3

_ruzmaz_ пишет:
как например?


Тут вопрос скорее риторический...
В частном случае со сложением выкрутился так:
Code:
  1. function sign($a) {
  2. if ($a>0x7FFFFFFF) $a-=0x100000000;
  3. return $a;}


Складывает теперь правильно, но появилась проблема в следующем месте.
На этот раз результат работы функции ROR. Кстати, написал конечно очень коряво, как смог с нулевым знанием PHP, буду очень благодарен если кто подскажет короткий вариант с помощью логических операций. Цель соответствовать ассемблерному ror-у, то есть ушедший вправо бит появляется слева.
Code:
  1. function ror($b,$a) {
  2. $s=str_pad(decbin($b), 32, "0", STR_PAD_LEFT);
  3. return bindec(substr($s,$a*(-1)).substr($s,0,32-$a));}


а вот и пример ошибки:

Code:
  1. // Правильный хостер
  2. $a=ror(96800817,3)
  3. echo $a; // $a=548971014
  4.  
  5. $a=ror(-43374997,3)
  6. echo $a; // $a=2142061773
  7.  
  8. // Проблемный хостер
  9. $a=ror(96800817,3)
  10. echo $a; // $a=548971014
  11.  
  12. $a=ror(-43374997,3)
  13. echo $a; // $a=2147483647 <- ошибка


Ну и как водится, уверен, что это не последняя проблема... Как бы найти решение не в переделки скриптов, а может какие переменные поменять в php.ini что бы работали одинаково скрипты.
PHP Version 5.2.6 на хорошем и 5.2.11 на проблемном.



Ранг: 53.9 (постоянный), 19thx
Активность: 0.040
Статус: Участник

Создано: 31 декабря 2009 03:47
· Личное сообщение · #4

Скорей всего "проблема" в том что у одного хостера 64 битный ПХП, а у другого 32 и соответственно у int разные размеры.
Сам сталкивался с этой проблемой, когда ip2long разные результаты выдавал (в базу ложилось с 32х битного, а читалось на 64).




Ранг: 450.3 (мудрец), 13thx
Активность: 0.20
Статус: Участник

Создано: 31 декабря 2009 22:11
· Личное сообщение · #5

Да, уже помогли понять проблему, теперь периписываю всё и под 64-битную систему...




Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 28 марта 2010 05:36
· Личное сообщение · #6

hosting подскажите халявный с PHP выше 5.2... просто для тренировки надо

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh





Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 28 марта 2010 10:30
· Личное сообщение · #7

А нужен ли хостинг то? Разверни на ВМ, есть же готовые комплекты даже, где апач+пхп+бд.



Ранг: 133.4 (ветеран), 57thx
Активность: 0.110
Статус: Участник

Создано: 28 марта 2010 11:52
· Личное сообщение · #8

Archer пишет:
есть же готовые комплекты даже, где апач+пхп+бд


www.denwer.ru/ php5.3.1



Ранг: 309.8 (мудрец), 21thx
Активность: 0.170
Статус: Участник

Создано: 28 марта 2010 12:56
· Личное сообщение · #9

Не проще ли просто php скачать?

-----
Shalom ebanats!





Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 28 марта 2010 14:56
· Личное сообщение · #10

denwer есть, надо как-то показывать свою работу, т.ч. нужен хост

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh





Ранг: 238.8 (наставник), 67thx
Активность: 0.20
Статус: Участник
CyberHunter

Создано: 30 марта 2010 19:11
· Личное сообщение · #11

Isaev

phpnet.us

-----
Nulla aetas ad discendum sera





Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 31 марта 2010 01:04
· Личное сообщение · #12

Flint спасибо, то что надо!
я уже думал не бывает

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh





Ранг: 355.4 (мудрец), 55thx
Активность: 0.320
Статус: Uploader
5KRT

Создано: 05 апреля 2010 20:52 · Поправил: Coderess
· Личное сообщение · #13

freehostia.com хороший хостинг был

-----
Gutta cavat lapidem. Feci, quod potui. Faciant meliora potentes





Ранг: 450.3 (мудрец), 13thx
Активность: 0.20
Статус: Участник

Создано: 06 апреля 2010 13:53
· Личное сообщение · #14

Так как это мной созданная тема в оффтопе, к тому же с уже решённой проблемой отрицательных чисел, было бы не плохо перевести её в русло публикации полезных фришных хостингов с поддержкой php. Думаю будет от этого польза многим.
Люди, кто знает надёжные, устойчивые и бесплатные хостинги - пишите плиз адреса.
А кто нибудь встречал фришный хостинг с кроном?

p.s. Для локальных извращений (без баз) можно использовать вариант проще, чем развёртывание апача. Google: php 2 exe




Ранг: 450.3 (мудрец), 13thx
Активность: 0.20
Статус: Участник

Создано: 06 апреля 2010 17:40
· Личное сообщение · #15

Посоветуйте бесплатный хостинг, где можно через ftp залить архив около 200mb, после чего иметь возможность давать прямую ссылку, ну и что-бы скорость скачивания не ограничивалась хостером...



Ранг: 221.3 (наставник), 135thx
Активность: 0.190.07
Статус: Участник

Создано: 07 апреля 2010 08:09
· Личное сообщение · #16

ToBad
000webhost.com, только размер дисковой квоты не помню уже

-----
xchg dword [eax], eax





Ранг: 450.3 (мудрец), 13thx
Активность: 0.20
Статус: Участник

Создано: 08 апреля 2010 12:00
· Личное сообщение · #17

void - Спасибо за адресок!
Со вчерашнего дня идёт процесс верификации. Они всегда так?



Ранг: 221.3 (наставник), 135thx
Активность: 0.190.07
Статус: Участник

Создано: 08 апреля 2010 13:25
· Личное сообщение · #18

ToBad пишет:
Они всегда так?

Эм... Нет обычно, я развертывал сайт за часа 4.

-----
xchg dword [eax], eax





Ранг: 450.3 (мудрец), 13thx
Активность: 0.20
Статус: Участник

Создано: 10 апреля 2010 13:30
· Личное сообщение · #19

void пишет:
Эм... Нет обычно, я развертывал сайт за часа 4.


Только вчера зарегали. Пришлось 2 тикета создавать... Но хостинг очень понравился! Спасибо!



Ранг: 221.3 (наставник), 135thx
Активность: 0.190.07
Статус: Участник

Создано: 10 апреля 2010 18:42
· Личное сообщение · #20

fatal.ru

-----
xchg dword [eax], eax





Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 12 апреля 2010 18:14
· Личное сообщение · #21

void пишет:
000webhost.com

ха, и с кроном есть халявные! я даже спрашивать боялся спасибо, приятных хостинг

ToBad пишет:
Со вчерашнего дня идёт процесс верификации. Они всегда так?

мне через пару сек зарегили

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh



 eXeL@B —› Оффтоп —› Проблема отрицательных чисел на PHP.

У вас должно быть 20 пунктов ранга, чтобы оставлять сообщения в этом подфоруме, но у вас только 0

   Для печати Для печати