pagetaka

写真、PC、ネット、岡山、旅の話題をお届けします

PHP:サーバー接続時間30秒制限と折り合いをつける

PHPでDOM、WEBスクレイピング実現しようと、浅学菲才ならぬ「浅学被災」な状態になっている爺です。

レンタルサーバーで連続使用30秒、というのを何とかしようと考えると熱が出そうです。熱が出ても解決できるならともかく、とてもできそうもないというのが、爺の「被災」状況です。

1回の巡回で取得する件数を少なくする

これまで、以前取得してないURLはすべて調べるということにしていました。その結果、1サイトでも10秒以上かかるというようなことになっておりました。ここを短くするにはスクリプトを改善し動作を早くする、というのがまず考えることです。

しかしながら、大して時間消費を減らすことができませんでした。それで、1サイト・1回あたりの取得数を制限することにしました。
その結果が次のような時間経過です。1サイトあたり1~2秒程度で済んでいます。これなら、15サイトくらいまで一回の巡回にくみこめそうだと妄想しました。

1(Aサイト)
17:04:17 : DB接続・サイト基本データ取得開始
(略)
17:04:17 : サイト表頁 個別記事リンク用DOM終了
(略)
17:04:17 :差分URLにアクセスし、記事情報取得 開始
17:04:18 :差分URLにアクセスし、記事情報取得 終了
17:04:18 :DB接続・新記事投稿 開始
17:04:18 :DB接続・新記事投稿 終了
2(Bサイト)
17:04:18 : DB接続・サイト基本データ取得開始
(略)
17:04:19 : サイト表頁 個別記事リンク用DOM終了
(略)
17:04:19 :差分URLにアクセスし、記事情報取得 開始
17:04:20 :差分URLにアクセスし、記事情報取得 終了
17:04:20 :DB接続・新記事投稿 開始
17:04:20 :DB接続・新記事投稿 終了
17:04:20 :巡回一連 終了

あとは、差分チェックとCRONに頼る

1回UPしたURLはDBに保管します。それを利用しようという考えです。
例えば、1回に3記事UPにすると…

CRON UP
1回目 10
2回目
3回目
4回目

1日4回CRONを実行したら10本の記事をUPできる。ちょっと時間がかかるけど…、というような妄想・幻想であります。

さて、なんとかなるのかしらん…。CRONのことも勉強しなくては…。