• ベストアンサー

PHPでバッチ処理(時間制御)をするには

よろしくお願いします。 PHP4でバッチ処理というか時間を自動で確認してメールを送信するPGを作りたいと思っています。 契約しているレンタルサーバ(Linux)でPHPを利用しています。Cronなどを利用せず、純粋にPHPのプログラムのみを利用してできる処理やノウハウをご存じないでしょうか?? どうぞ、ご教授お願い申し上げます。

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

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

  • ベストアンサー
  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

 PHPはHTTPリクエストに対して動作する仕組みで、HTTPによるキックが無いと動かない。これはcronを引き合いに出しているので分かっているのだろう。ではどうすれば良いか。  ひとつの(泥臭い)解は、じゃあ別のマシンでHTTPをキックするプログラムを作れば良いという事になる。  つまり、ある特定の(おそらく自作の)HTTPクライアントと協調して、必要なPHPの呼び出しはクライアントが行い、PHPはそれに応じた処理を行うという事になるな。もちろんこの場合、自前でチャレンジレスポンスを行うなど、そのプログラムから以外は絶対にキックされない仕組みを作りこむ必要がある。  残念ながら私にはこのくらいしか思いつかない。

RSTREET
質問者

お礼

ありがとうございます。なるほど、外部からのキックという方法がありますね。自前サーバだったらいくらでも動かせますからね。

その他の回答 (2)

noname#48563
noname#48563
回答No.3

cronがいやだというのであれば、atを使うというはどうでしょう(W それ以外だと、以下の力業しかないのでは?  ・nowとsleepを使う  ・はてなアンテナなどの更新チェックサイトを活用 いずれも迷惑ですね(w。やはり、atが筋ではないでしょうか。

RSTREET
質問者

お礼

ありがとうございます。 at!いいですね! 早速調べました。 ただ、レンタルサーバーですので、サーバーの機能を利用するわけにいかないんです。。。 でも、この機能を利用すれば、余裕でプログラムをキックできますね!

noname#48563
noname#48563
回答No.2

systemを使ってシェルをコールするのはどうでしょうか?

参考URL:
http://jp2.php.net/manual/ja/function.system.php
RSTREET
質問者

お礼

ありがとうございます。 >systemを使ってシェルをコールするのはどうでしょうか? そういう手もありますねー。 たとえば、毎日AM1:00に自動でPHPからメールを配信したい場合、どのように動作させればいいでしょうか? systemを使ってシェルをコールするための準備が必要になるかなぁ・・と考えてしまったのですが。・・。

関連するQ&A

  • 長時間かかるPHPプログラムの処理方法。

    長時間かかるPHPプログラムの処理方法。 PHPプログラムを作成したのですが、処理が終わるまでおそらく数時間掛るようなプログラムを作成しました… 普通にURLにアクセスしても途中でストップしてしまいます。 シェルスクリプトをかまして、CRONジョブで処理したら、サーバーの条件によって途中で止まってしまいます。 サーバーはXREAを使用しています。CRONジョブは3分以上の処理はダメなようです。 長時間のプログラムを処理する方法はあるのでしょうか? 専用サーバーを使う必要があるなら、そういった事が可能でサービス的に良いところを教えてくれると助かります。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 30秒ごとに処理をさせることが可能なサーバーは?

    処理的には簡単なPHPプログラム(数秒で終わるようなもの)を30秒ごとに処理させたいと考えています。 システム的には簡単で、負荷もかからないものなので何とか安価なレンタルサーバーで設定できないかと探しています。 cronによる設定でも以下のような設定にすれば可能であるということも教えて頂いているのですが、このような設定ができる(専用・VPSサーバーでないもの)レンタルサーバー会社が見つかりません。どなたかご存知ないでしょうか? * * * * * コマンド & sleep 30 ; コマンド cron以外にwatchという命令も使えると可能らしいのですが、このような設定ができる(専用・VPSサーバーでないもの)レンタルサーバー会社はあるでしょうか?

    • ベストアンサー
    • PHP
  • PHPアクセスログ バッチ処理

    はじめまして。 独学PHPを学んでいて、就活をしています。 そこである課題を出されました。 アクセスログ出力プログラムとアクセスログ集計プログラムです。 双方プログラムが出来上がり提出したのですが。 修正してくださいとのこと。 ・CTI 環境にてバッチで動くため、 $_SERVERなどのHTTPを前提とした 変数や関数は利用出来ないとのこと。 ・出力はEUC-JP で改行はCF (mb_convert_encoding で変換し、改行は/n) どちらもCSV に出力するプログラムです。 ご教授願います。

    • ベストアンサー
    • PHP
  • phpでバッチ組めますか?

    phpで画面のないアプリケーションを作成し、シェル起動させる事は可能ですか? やらない方が良いのかもしれませんが既存の資産を利用できるので楽な事もあり問題ないならそうしたいと思います。 バッチでやる事はMYSQLのデータの加工です。 バッチでMYSQLのデータを加工するなら○○を使った方が良いというアドバイスもあればお願いします。 ・linux ・php ・mysql

    • ベストアンサー
    • PHP
  • PHPバックグランド処理について

    初めて、質問させて頂きます。 コミュニティーサイトを運営しているのですが、登録メンバーが増えてきてメール送信の処理に時間がかかるようになってきました。 現在は、MYSQLのDBから 条件に会った人のアドレスを検出させて whileのループでmail関数で送信しています。 $result=mysql_query("**************"); while($value = mysql_fetch_array($result)){ $MAIL=$value["MAIL"]; mail($MAIL,$sbj,$msg,$header,"-fmail@mail.com"); } バックグラウンドで処理させる方法をインターネットで調べていたら 下記のURLにたどりつきました。 http://www.itboost.co.jp/phptips/view.php?fCID=21 呼び出しプログラムを mail.php 送信プログラムを send.php とし、mail.phpから ある条件下で send.phpを実行させるために system("send.php $1 $2 $3 $4 $5 > index.php &"); という感じにしてみましたが、うまくいきません。 パスの問題なのでしょうか?それとも根本的に間違っているのでしょうか? 解決策や、他の方法があれば教えてください。 お願いします。 環境:レンタルサーバ OS Redhat Linux Server Apache DB MYSQL PHP4.12 qmailは入っていません。

    • ベストアンサー
    • PHP
  • cronでバッチファイルの実行時間に制限はある?

    cronでバッチファイルを動かしています。 しかし、そのバッチファイルが完了するまで約2分ちかくあります。 以前、linuxでは2分までしかバッチファイルのプログラムを動かすことができないと聞いた事があったような気もするのですが、実際のところはどうなのでしょうか。 できれば1つのバッチファイルで約4分間ぐらい実行したいのですが、問題はありますでしょうか?

  • cronでphpを実行できない

    cronでphpを一部実行できない状態です 試しにメール送信処理のphpを作りcronで実行しまして送信できました しかし、mysqlで情報を取得しそれをメール送信するphpをcronするとNGです。 上記phpはブラウザからは問題なく処理できます 実行権限などでしょうか? 詳細な解決策を知っている人は教えていただきたいです

    • ベストアンサー
    • PHP
  • PostgreSQL バッチでバックアップ

    PostgreSQL 8.4に関する質問です。 サーバ:Linux、PostgreSQL 8.4 クライアント:Windows 7 Windowsマシンから、バッチファイルでサーバ上のPostgresのバックアップを取りたいのですが、 以下のコマンドをバッチファイルに記述して実行すると、 「パスワード:」というプロンプトが出て処理が止まってしまいます。 pg_dump.exe -h [DBサーバのIP] -U [ユーザ名] -F custom -b -v -f "C:\test.backup" "test" パスワードを入れればバックアップはできるのですが、 パスワードの入力まで完全自動化するにはどうすればいいでしょうか。 Linux上のPostgresはSSL接続のみ許可するようになっています。 Windowsのタスクで毎日バックアップする運用を想定しています。

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

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

  • CRONジョブを作成・編集するPHPを作りたい

    PHP・CRON・Telnetが使えるレンタルサーバーを使用しています。 通常、CRONはレンタルサーバーの管理画面かTelnetで作成することになっているようですが、PHPを使って作成するにはどうすればいいのでしょうか? (ブラウザ上のフォームから作成・編集できるようにしたいと思っています。)

    • 締切済み
    • PHP

専門家に質問してみよう