1

自分の Web サイトにリダイレクト機能があり、ユーザーはホワイト リストに登録され、ridirect が有効になっているサイトにリダイレクトされます。

例として、ユーザーの URL が

mydomain.ridirect.com/rdrct?site=www.goog.com

現在、関連スクリプトはデータベース呼び出しを行い、データベースにはホワイトリストに登録されたドメインをチェックするテーブルがあり、ドメイン名がリダイレクト可能かどうかも通知します

id  domain_name  redirect
1   www.yah.com  1
2   www.go.com   0
3   www.goo.com  1
4   www.foo.com  1

サンプルユーザーはホワイトリストに登録され、リダイレクトが有効になっているため、リダイレクトされます。

問題は、この設計は実際の実行ではかなり高価なものです..ほとんどの場合、多くの時間を消費します. ユーザーが来るたびに、db 呼び出しが行われます。

したがって、データベース呼び出しが行われる前に配列を宣言しています。

$redirect = array();

基準を満たす正しいドメイン名である場合、値は上記の配列に追加されます

array_push($redirect, $trusted_domain, $id, $row["redirect"]);
var_dump($redirect);

したがって、私の設計では、ユーザーが同じドメイン名を再度入力すると、db 呼び出しは行われず、代わりにアレイが chk されて続行されます。

したがって、このシナリオに一致する静的な配列を作成するのを手伝ってくれる人はいますか(複数のリクエストの過程で配列を永続化します)...

4

2 に答える 2

1

複数のリクエストで配列を永続化する必要がある場合は、以下をご覧ください。

APC http://php.net/manual/en/book.apc.php

APCU以下のコメントに記載されているように、 PHP https://pecl.php.net/package/APCu の新しいバージョンには apcu を使用してください。

apc を使用した場合の解決策は次のとおりです。データベースを使用しapc_add、その後apc_exists、URLが許可されているかどうかを確認します。

または、 http://redis.io/のような他のキー値ストレージを使用することもできます

于 2015-05-27T11:29:47.140 に答える