ホームページ >バックエンド開発 >PHPチュートリアル >ソースコードを見るのを手伝ってください

ソースコードを見るのを手伝ってください

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBオリジナル
2016-06-23 14:14:581004ブラウズ

<html><head></head><body><?php$filename = 'english.dat'; //数据文件名$refresh = 1; //更新周期(以秒为单位,可根据需要自行调整)$data = file($filename); //将数据文件装入一个数组$num_lines = count($data); //数据文件行数,也就是记录条数 mt_srand(floor(time() / $refresh));$id = mt_rand(0, $num_lines - 1); //随机选择一条记录号$content = chop($data[$id]); //根据记录号选择相应的数据,并截去最后的换行符echo $content; //用javascript形式输出数据?></body></html>

これはインターネット上で見つけたスケジュールされた更新ページのソースコードです。スケジュールされた関数を実装しているコメントされていない部分の意味がよくわかりません。


ディスカッションへの返信(解決策)

スケジュールされた更新関数が表示されません 配列要素をランダムに選択して出力する PHP です。それとも他のコードがありますか?

mt_srand 乱数生成器のシード

通常の更新関数は見当たりません。配列要素をランダムに取得して出力するのは PHP です。それとも他のコードがありますか?
リフレッシュ設定値が大きい場合は、このリフレッシュが時間を制御しているようです。

mt_srand 乱数ジェネレーターをシードします
これはスケジュールされた更新とどのような関係がありますか?分かりません。

あなたが尋ねているのは、コメントされていないセクションが何を意味するのかということです。それが定期的な更新と何の関係があるのか​​については、あなた自身で考えてください
あなたはそれが定期的に更新されるページのソースコードだと言いました

なぜなら、それがいつ更新されるのかということです。はランダム シードになり、mt_rand() は特定の順序で出力されます。つまり、ランダム シードは同じであると仮定します。各時間は 5 に等しいです


そして、time() はタイムスタンプ、つまり秒数であるため、refresh を 30 に設定した場合、特定の time() が 300 であると仮定すると、ここからの 30 秒は次のようになります。 300, 301, 302, 303,...329 になります

300, 301, 302 , 303,...329 をそれぞれ 30 で割ると、商の整数部分は一致しますので、
$id = mt_rand( 0, $num_lines - 1);
この ID はこの 30 秒間は変更されませんが、次の 30 秒以内に必ず変更されるため、30 秒ごとに定期的に更新されます

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