ホームページ >php教程 >php手册 >Google PR クエリ インターフェース チェックサムの新しいアルゴリズム ページ 1/2

Google PR クエリ インターフェース チェックサムの新しいアルゴリズム ページ 1/2

WBOY
WBOYオリジナル
2016-06-13 12:25:02818ブラウズ

代わりに、「メールで、以下に表示されているコード全体を送信してください」などの大きな Google サービス利用規約エラー メッセージが表示されます。元のインターフェースが無効になっているようです。

しかし、Firefox ツールバーにインストールした拡張機能 SearchStatus は、アクセスした各ページの PR 値を通常どおり解析できます。SearchStatus プラグイン パッケージを見つけて、ソース コードを確認するために解凍しました。コード生成アルゴリズムでは、元のチェックサムが生成された後、2 回の計算後に正しい ch パラメーターが取得される必要があります。

つまり、既製の JS コードを変換した後、新しい PHP バージョンの Google PageRank クエリ インターフェース メソッドが登場しました。ローカルでテストした後、サーバーに送信しようとすると、ひどいサービス条件エラー メッセージが表示されます。チェックサム計算プロセスを段階的に入力したところ、右シフトを数回行った後で、ローカル コンピューターとサーバー上の数値が異なることがわかりました。そのとき、サーバーは 64 ビット マシンであり、32 ビット システムで移行した後に切り出されるはずのビットがまだそこに健在であることに気づきました。すべての算術演算後に値の上位ビットをマスクするために、trunkbitForce32bit メソッドが追加され、64 ビット システムにおける冗長ビットの問題が解決されます。そのため、32 ビット Linux 環境で実行すると互換性がなくなります。これは、PHP が算術処理中にオーバーフローすると、自動的に int を float に変換しようとするためです。負の数値のオーバーフローが発生した場合、Windows ではこの操作で精度が正しく維持されますが、Linux では問題が発生します。

次のコード:

$a = -4294967295;
echo dechex($a)."
n"; ; 0 ) $a = 4294967296;
echo dechex($a)."
n";

Windows では、最初のエコーは負の数の下位 32 ビットを正しく出力できます。の補数ですが、32 ビット Linux マシンでは、int 型で表現できる負の数の最大値は 0x80000000 です。オーバーフローを相殺する難しい方法で、整数の範囲外にある大きな整数をオーバーフローした負の数に追加することによってのみ、下位 32 ビットをあるべき状態に復元できます。

これらの型破りな手段を使用して、Linux32/Linux64/Windows と互換性のある、Google PR 値クエリ インターフェイスの PHP スクリプト実装 (完全なコードを含む) の更新バージョンを最終的に作成しました。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。