• ベストアンサー

phpスクリプトのみで定期実行

PHPのプログラムのみで5分に1回くらいサーバーにアクセスしメールチェックしたい。 現状サーバーにアクセスしメールチェックするとこまで完成してるのですが、定期的にアクセスする方法で苦戦してます。 条件的には (1)PCは切りたい (2)cronは使用できません (3)cgi等も使用できません PHP無限ループ+タイマーで自動実行風にできるでしょうか? 詳しい方、ご回答よろしくおねがします。

  • PHP
  • 回答数3
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
noname#123003
noname#123003
回答No.1

(1)PCは切りたい (2)cronは使用できません このどちらかが可能なら可能なんですが。。 専用サーバーとか自前のサーバーならPHPを好きなように実行できますが、 (というかそれならcronが使用できますよね。) それ以外の場合はなんらかのアクセスがなきゃ実行されません。 >PHP無限ループ+タイマーで自動実行風にできるでしょうか? 無限ループでバッファ関数を使っても5分はきついでしょう。 それでもアクセスしなければ実行されないうえに、 大体のサーバーが30秒ぐらいでPHPの処理制限がありますから、それ以上実行できません。 一般的にこういった処理は普通cronを使います。

seventozero
質問者

お礼

やっぱサーバーにはそういった制限がかかっているのですね(^_^;) おっしゃるとおりcronが使えればいいのですが・・

その他の回答 (2)

回答No.3

コマンドラインでphpを使ったらどうでしょう。 例えば、loop.phpファイルを作り内容は以下のような感じにします。 #!/usr/bin/php -q <?php while(){ やりたい処理; sleep(3600); } ?> それをLinuxサーバーのコマンドラインで php loop.php で実行。 始めてしまったプロセスを止めるにはLinuxのkillコマンドで。 自分ではやったことないので、やるなら自己責任で。 参考URLもよく見てね。

参考URL:
http://www.ibm.com/developerworks/jp/opensource/library/os-php-command/
seventozero
質問者

お礼

OSがFreeBSDでなのでできるかどうかわからないのですが、調べてみます。 ありがとうございました。

回答No.2

質問の意図がイマイチ不明瞭です。 PHPプログラムは何で実行する予定ですか。 ローカルPCで、デーモン的に使いたいということなのでしょうか。 レンタルサーバのような自分の自由に構成がきかないものの上で行いたいということでしょうか。

seventozero
質問者

お礼

回答遅くなってしまい、すいません。 無限ループなので、一回phpスクリプトにアクセスしたら定期的にずっと実行するようなことを考えていたのですが。 難しいみたいですね・・・

関連するQ&A

  • cronでcgiやphpを定期的に実行させたい

    cronが使用できる、レンタルサーバを利用しており、cronの設定はWEB上からコントロールパネルへアクセスして、日時やコマンドを入力できるようになっています。 cronで定期的にphpやcgiを実行させたいと思うのですが、このような事は可能でしょうか? 初めてcronに挑戦してみようと思っていますので、詳しくアドバイスを頂けると助かります。 よろしくお願いします。

  • レンタルサーバーでアクセスが多くてPHPスクリプトなどでCPU負荷があ

    レンタルサーバーでアクセスが多くてPHPスクリプトなどでCPU負荷があればどうなりますか? 今度レンタルサーバー借りようと思っていますが、例えばPHPなどの スクリプトを仕込んで、人気が出てアクセスが極端に多くなったら どうなるのでしょうか?共用サーバーなら他ユーザーのも停止させることに なるのでしょうか。それとも自動的に停止させられて警告が来るのか 損害賠償など教えて欲しいです。 PHPには無限ループなどの欠陥的なものではなく単にアクセスが多くなった場合です。 宜しくお願いします。

  • シェルスクリプトで複数実行するには?

    web上からもアクセスできるphpに、定期的にアクセスするようにしたいと思っています。 定期的にアクセスするには、cronを利用すればできると思っていますが、phpへアクセスする方法が分からないために、別の記事にて質問させて頂いています。 (cronが利用できる、レンタルサーバを利用しております。) そこで、いろいろと調べていたところ、.shの拡張子のファイルを作成して、その中に命令事項を記入しておき、cronで.sh(シェルスクリプト?)を実行すれば良いみたいな事が記載されていました。 定期的自動にアクセスしたいphpファイルは複数あるので、phpファイルごとにcronを設定するより、このシェルスクリプトを利用して、複数のphpにアクセスできるようにできれば良いと思いました。 例えば「abc.sh」と言うファイルに、下記を記載してアップロード、パーミッションの設定。 #!/bin/sh/usr/bin/wget -q --spider http://xxx.yyy.com/abc/xxx.php そして、cronで実行日時を設定してこのファイルを実行すれば、「http://xxx.yyy.com/abc/xxx.php」へアクセスするような事が書かれていました。 複数のアドレスにアクセスさせたい場合は、.shのファイルにはどのように記述をすれば良いのでしょうか? またcron終了後にログメールが送信されてきますが、このログメールを送信しないようにするには、どのような記述をすれば良いのでしょうか? 一応調べてみたのですが、確認をお願いします。 abc.sh >/dev/null または abc.sh 2>&1 > /dev/null または abc.sh > /dev/null 2>&1 上記のような、複数の記述方法がありました。 どの記述方法がベターでしょうか。 質問をまとめますと、 複数のphpにアクセスする、シェルスクリプトの記述方法について。 cron終了後のログメールを送信しないようにするための、cronのコマンドの記述方法。 アドバイスを頂けると助かります。

  • phpの設定について

    interQのプロバイダを使用しています 割り当てられているサーバにphpのソフトを設置したのですが サーバにUPしてソフトの管理室にアクセスしたところ phpのソースが表示されてしまい、管理室の画面になりません お借りしたソフトは「ランダムバナー完成版」です http://revonet.grrr.jp/script.php そこで、お伺いしたいのですがインターQではCGIを設置するのに http://cgi.members.interq.or.jp/**/**/ という場所に設置するのですが、phpも同様でしょうか。 また、phpはサーバにアップ後、パーミッションを変更しなければならないのでしようか。 CGIの場合、DL後にファイルを開いて一行目を書き換えなければなりませんが、phpは、そのままでいいのでしょうか どうぞ、分かりやすくお教えください

  • cronでPHP実行

    お世話になります。 OSはクライアントの為、恐縮ながら何を使用しているか不明となっております。 PHPバージョンは5.1.6です。 cronを使用して、毎日特定の時間に、メールを配信するPHPスクリプトを実行しようと試みているのですが、エラーメールが返ってきてしまいます。 因みに、URLを直接指定して実行した場合は正常にメールが配信されます。 設定方法は、crontab -e で 0 12 * * * /usr/lib/php -q /home/hoge/public_html/mail.php と記述しております。 返ってくるエラーメールの内容は、以下の通りです。 Content-Type: text/plain; charset=UTF-8 Auto-Submitted: auto-generated X-Cron-Env: <SHELL=/bin/sh> X-Cron-Env: <HOME=/home/hoge> X-Cron-Env: <PATH=/usr/bin:/bin> X-Cron-Env: <LOGNAME=hoge> X-Cron-Env: <USER=hoge> Message-Id: <xxxxxx@xxxxxxxxxx> Date: Sun, 28 Sep 2008 12:00:01 +0900 (JST) /bin/sh: /home/hoge/public_html/mail.php: Permission denied 以上、対策方法についてご存知の方がおられましたら、ご教授よろしくお願い致します。

  • PHPを使い転送

    http://******/ (index.php) にアクセスすると 瞬時に http://******/index.cgi に転送するようにするには どうしたらいいのでしょうか ソースまたは、参照URLを 書いてくれるとうれしいです あとで補足されても困りますので 先に・・・・ 今使用しているサーバーが http://******/ (index.cgi を読み込んでくれないんです ですが PHP(index.php)ですと 読み込んでくれるので 転送PHPを必要としています

    • ベストアンサー
    • PHP
  • IIS 5.2 上での PHP 5.3.5 の実行

    下記サイトを参考にサーバー(OS: MS Small Business Server & IIS 5.2) に PHP 5.3.5をインストールしました。 http://network.station.ez-net.jp/server/microsoft/windows/2008/iis7_php535.asp Command Line で PHP -v と入力すると正常にバージョンが返ってくるので PHP のインストールそのものは正常に終わったと考えていますが、 PHP の実行が出来ません。 例えば中身が <?php phpinfo(); ?> という内容のテストプログラムを他の cgiプログラムと同じフォルダに置き、ブラウザでアクセスしても動作しないのです。 IIS: WEB サイト→プロパティ→ホームディレクトリ→構成 の 拡張子 .php の設定は "C:\Program.Files\PHP\php-cgi.exe" としました。勿論 exe ファイルは上記パスで指定したフォルダに存在します。 XAMPP というパッケージソフトを使用し、PCのLocal Hostをサーバーに見立てて PHPを実行する事は出来ます。 この環境で作成した PHP をサーバー上で稼動させ、外部に公開したいのです。 初歩的なところで躓いているのだと思います。 PHPに詳しい方、教えて下さい

  • cronで実行するプログラムにアクセス制限をかけたいです。

    cronで実行するプログラムにアクセス制限をかけたいです。 cron.phpをcronで3時間に1回実行しているのですが、誰かがこのcron.phpに直接アクセスしてきても同様のプログラムが実行されてしまいます。 これをcronからのみ実行できるように制限をかけたいのですが、どのようにするのが一般的なのでしょうか?.htaccessの基本認証等を使用するのですか? よろしくお願いしいます。

  • CGI-PerlとPHPの速さについて

    CGI-PerlとPHPの比較サイトを見てまわっていたところ、 「PHPは多くのアクセスがあっても(CGIに比べ)サーバへの負荷が少ない」 という内容を見かけました。 一般に「PHPはCGI-Perlより速い」と言われている気がしますが、 もしかしてそれは、アクセスが多数ある場合に限定した話なのだろうか、と疑問に思いました。 ローカルサーバなどで1人~数人しかアクセスしないという環境でも、 同じことが言えるのかどうか知りたいです。お願いします。

  • cronで外部ファイルへアクセス

    はじめまして。分からない事あり、質問させて頂こうと、アカウントを取得いたしました。 cronが使える共有レンタルサーバー内に、ある簡単なメールが送信されるファイルを置きました。cronテストのために設置したファイルで、アクセスされるとメールが送信されるだけのものです。(ブラウザ経由でアクセスしてもメールが送信されます) そこで、以下のようなファイルを作成し、cronにて日時設定を行うと、正常にメールが配信されるまで確認いたしました。(mail.phpとは上記メール配信ファイルです) #!/bin/sh #PHP /usr/local/bin/php /~~~~~~/cron_test/mail.php exit 他方、あるレンタルサーバーを借りているのですが、そこではcronが使えません。 そこで、アクセスされたらPHPが働くファイル(access.phpとします)を置き、cronが使える上記サーバーで定期的にそのaccess.phpにアクセスしたらどうか?と考えに至りました。 要は、cronが使えない以下のサイト(ファイル)にcronを使ってアクセスしたいといった感じです。 http://○○○.com/access.php ここで質問なのですが、上記のような一連のcronの中で、mail.phpにあたるスクリプトはどのようなものになるのでしょうか? echo"<img src=\"http://○○○.com/access.php\">"; と記述しているのですが、失敗に終わってしまいます。 前置きが幾分長くなってしまいましたが、この外部ファイルをアクセスするためのソースが分からず困っている次第です。 お忙しい中恐縮ですが、アドバイスのほど宜しくお願い致します。

    • 締切済み
    • PHP

専門家に質問してみよう