Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Проблема! Помогите разобраться!
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index Russian
View previous topic :: View next topic  
Author Message
kuk
n00b
n00b


Joined: 24 Mar 2005
Posts: 16

PostPosted: Wed Jun 28, 2006 10:36 am    Post subject: Проблема! Помогите разобраться! Reply with quote

В общем проблема с пхп скриптом определения Google Page Rank. А точнее в определении чексуммы. На разных серверах получаются разные результаты. Стал разбираться и нашел такую вещь... что скрипт основан на переполнении переменных, так вот у меня на генту максимальный размер переменной вещественног типа больше чем на другом сервере.

Вот код где начинает происходить расхождение:

<?php
function mix($a,$b,$c) {
$a -= $b; $a -= $c; $a ^= (zeroFill($c,13));
$b -= $c; $b -= $a; $b ^= ($a<<8);
$c -= $a; $c -= $b; $c ^= (zeroFill($b,13));
$a -= $b; $a -= $c; $a ^= (zeroFill($c,12));
$b -= $c; $b -= $a; $b ^= ($a<<16);
$c -= $a; $c -= $b; $c ^= (zeroFill($b,5));
$a -= $b; $a -= $c; $a ^= (zeroFill($c,3));
$b -= $c; $b -= $a; $b ^= ($a<<10);
$c -= $a; $c -= $b; $c ^= (zeroFill($b,15));

return array($a,$b,$c);
}
?>

Как можно исправить размер переменных в пхп?
Back to top
View user's profile Send private message
Laitr Keiows
Moderator
Moderator


Joined: 04 Jul 2005
Posts: 891
Location: Kobe, Japan

PostPosted: Wed Jun 28, 2006 10:41 am    Post subject: Re: Проблема! Помогите разобратьс Reply with quote

kuk wrote:
Как можно исправить размер переменных в пхп?

uname -a тут и там скажи
Back to top
View user's profile Send private message
webkuk
n00b
n00b


Joined: 28 Jun 2006
Posts: 4

PostPosted: Wed Jun 28, 2006 10:57 am    Post subject: Reply with quote

Там где все робит:
FreeBSD server.dreamhoster.com 5.4-RELEASE FreeBSD 5.4-RELEASE #0: Tue May 16 11:22:25 EEST 2006 root@server.dreamhoster.com:/usr/src/sys/i386/compile/HOSTINGHTT i386 FreeBSD server.dreamhoster.com 5.4-RELEASE FreeBSD 5.4-RELEASE #0: Tue May 16 11:22:25 EEST 2006 root@server.dreamhoster.com:/usr/src/sys/i386/compile/HOSTINGHTT i386

Там где нет:
Linux localhost 2.6.16-gentoo-r8 #1 SMP Sun Jun 25 16:50:55 YEKST 2006 i686 Intel(R) Celeron(R) CPU 2.40GHz GenuineIntel GNU/Linux
Back to top
View user's profile Send private message
Laitr Keiows
Moderator
Moderator


Joined: 04 Jul 2005
Posts: 891
Location: Kobe, Japan

PostPosted: Wed Jun 28, 2006 11:09 am    Post subject: Reply with quote

Мог бы ты составить какой-нибудь минимальный тестовый скрипт который работает на фре у хостера и не работает у тебя? Я у себя попробую.
Back to top
View user's profile Send private message
webkuk
n00b
n00b


Joined: 28 Jun 2006
Posts: 4

PostPosted: Wed Jun 28, 2006 11:18 am    Post subject: Reply with quote

Текст скрипта http://1sw.ru/testpr.txt
Результат http://1sw.ru/testpr.php
Back to top
View user's profile Send private message
Laitr Keiows
Moderator
Moderator


Joined: 04 Jul 2005
Posts: 891
Location: Kobe, Japan

PostPosted: Wed Jun 28, 2006 11:41 am    Post subject: Reply with quote

webkuk wrote:
Текст скрипта http://1sw.ru/testpr.txt
Результат http://1sw.ru/testpr.php

Не вижу тут test-case из двух строчек :(

Попробуй посчитать все это с помощью bcmath
Back to top
View user's profile Send private message
webkuk
n00b
n00b


Joined: 28 Jun 2006
Posts: 4

PostPosted: Wed Jun 28, 2006 12:59 pm    Post subject: Reply with quote

Ты запускал скрипт... Там выдается результат выполнения функции... Если чексумма совпадет он выдаст "Верная чексумма!" а если нет то он выдаст ответ как на 1sw.ru
Back to top
View user's profile Send private message
Laitr Keiows
Moderator
Moderator


Joined: 04 Jul 2005
Posts: 891
Location: Kobe, Japan

PostPosted: Wed Jun 28, 2006 1:13 pm    Post subject: Reply with quote

У меня на серваке выдает: Неверная чексумма! У вас -2147387515, а правильная 1786855807
Под вендой все ок.

Ты пробовал выяснить где конкретно возникает ошибка?
Back to top
View user's profile Send private message
kuk
n00b
n00b


Joined: 24 Mar 2005
Posts: 16

PostPosted: Wed Jun 28, 2006 1:18 pm    Post subject: Reply with quote

Да я вначеле про это и написал... что все возникает в функции mix. Когда выполняется xor происходит переполнение переменной и он выставляет ей значение равное максимальному значеню целого типа... так вот в винде у меня тоже все ок... а на линухе размер значительно больше.
Back to top
View user's profile Send private message
rusxakep
Guru
Guru


Joined: 09 Jul 2004
Posts: 458
Location: Moscow, Russia

PostPosted: Thu Jun 29, 2006 12:05 pm    Post subject: Reply with quote

используй приведение типов к какому-нибудь одному. И все будет нормально на всех платформах. Ну как минимум на x86
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Russian All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum