ついに夏本番!さぁ、家族でキャンプに行くぞ! >>

サーバー上でPHP4.xxからメールを配信するシステムを構築しています。
自社サーバーですが、やはり一度に1000通とか送るとサーバーへ負担がかかるので、1通づつ10秒毎に送信して3時間くらいかけて送るシステムを考えています。

1つのプロセスを行って10秒後にまた同じプロセスを繰り返すにはどうしたらいいでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (2件)

UNIX系サーバーなら cron を回すのが常套手段ですが、


PHPだけで処理したいのなら、CLIモードで以下を動かす
<?php
while (1) {
// ここに繰り返したい処理を入れる
sleep(10);
}
?>
    • good
    • 0
この回答へのお礼

ありがとうございます!

私の求めていた最高の答えです!!

PHPのコードの中に sleep というのが
あったのですね・・!

また一つ勉強になりました!!

お礼日時:2009/05/22 01:03

atですべてスケジューリングしたらいいのでは?

    • good
    • 0
この回答へのお礼

回答ありがとうございます!

ただ自分のレベルが低すぎて「at」が何か分かりませんでした。
(ノω・、) ウゥ・・・

お礼日時:2009/05/22 01:01

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qsyntax error, unexpected '}' というエラーの対処法

PHPを習い始めて三日目になるのですがParse error: syntax error, unexpected '}' in C:\Program Files\Apache Group\Apache2\htdocs\****\****\game.php on line 33
というエラーがでるのですが33行目前後のどこをなおせばいいのでしょうか?
・game.php
<html>
<head>
<title>数当てゲーム</title>
</head>
<body>
<h1 style="background:#cccccc">数当てゲーム</h1>
<form method="POST" action="game.php">
1~100までの数を入力してください
<input type="text" name="answer" size="5" maxlength="3" />
<input type="sbumit" value=回答" />
</form>
<hr />
<?php
session_start();
if(is_null($_SESSION['answer'])){
mt_stand(microtime()*1000000);
$_SESSION['answer']=mt_rand(1,100);
$_SESSION['game_cnt']=0;
}
if($_POST['answer']!=""){
$_SESSION['game_cnt']++;
if($_session['answer']==$_POST['answer']){
print("おめでとうございます".
$_SESSION['game_cnt']."回で正解しました!");
session_destroy();
}else{
if($_SESSION['answer']>$_POST['answer']){
print("もう少し大きいです。");
}else
print("もう少し小さいです。");
}
}
}
?>
</body>
</html>
それとこの間違えたところをなおしたあとはいつもコンピュータを再起動しないと修正したところが適用されないのですがほかに方法はないですか?基本的な質問ですいません。

PHPを習い始めて三日目になるのですがParse error: syntax error, unexpected '}' in C:\Program Files\Apache Group\Apache2\htdocs\****\****\game.php on line 33
というエラーがでるのですが33行目前後のどこをなおせばいいのでしょうか?
・game.php
<html>
<head>
<title>数当てゲーム</title>
</head>
<body>
<h1 style="background:#cccccc">数当てゲーム</h1>
<form method="POST" action="game.php">
1~100までの数を入力してください
<input type="text" name="answer" size="5" max...続きを読む

Aベストアンサー

print("もう少し大きいです。");
}else
print("もう少し小さいです。");
のelseの後に{がないようですが、大丈夫でしょうか?

QPHPで別PHPを呼び出す。

PHPプログラムないで別PHPを呼び出し戻り値を受け取ろうと考えています。


test1.php-------------
<?php
print "<html><body>\n";
$return_data= exec(/usr/local/bin/php ./test2.php?param1=1¶m2=2);
print $param1."+".$param2."=".$return_data;
print "</body></html>";

test2.php------------------
<?php
$return_item = $param1 + $param2;
print $return_item;
?>

のように、test1.phpからパラメータを渡し、
test2.phpで計算をして答えをtest1.phpに返す
プログラムを作成しました。

test1.phpからtest2.phpをパラメータをつけて渡すのが
うまくいきません。

execではパラメータをつけることはできないのでしょうか?もしくは他の方法はないでしょうか?

functionやincludeではなく上記の方法で行いたいと思っております。

お手数ですが、アドバイスお願い致します。

PHPプログラムないで別PHPを呼び出し戻り値を受け取ろうと考えています。


test1.php-------------
<?php
print "<html><body>\n";
$return_data= exec(/usr/local/bin/php ./test2.php?param1=1¶m2=2);
print $param1."+".$param2."=".$return_data;
print "</body></html>";

test2.php------------------
<?php
$return_item = $param1 + $param2;
print $return_item;
?>

のように、test1.phpからパラメータを渡し、
test2.phpで計算をして答えをtest1.phpに返す
プログラムを作成しまし...続きを読む

Aベストアンサー

こんにちは。

CやJAVAやっていれば、すぐわかるのでしょうが・・・。
コマンドライン上からパラメータを渡す方法を考えてください。

PHPのようなC言語ライクな言語では慣用的に、

argv や argc といった「arg」が付く変数名が特別な扱い方をされます。
JAVAだと args ですね。
で、PHPだと、
$argv と $argc になります。

$argv は、引数で渡されたパラメータの配列です。
$argc は、パラメータの個数が格納されています。

パラメータの渡し方は、

"/usr/local/bin/php ./test2.php aaa bbb"

のように、半角で区切った形になります。

GETのように、スクリプトのあとに aaa=bbb&ccc=ddd と渡すと
「&」以降が特殊な値ととられてしまいます。

具体的にいうと、 test2.php のパラメータを受け取る部分は以下のようになります。

$param1 = $argv[1];
$param2 = $argv[2];

で、$argv[0] には、./test2.php が入っています。(実行させたいスクリプトへのパス)
また、$argc には、3 が入っています。(配列$argv の要素数)

次に、実行結果を受けとる方法ですが、

test2.phpから、実行結果を受け取りたい場合は、exec 関数は、他の言語の exec 関数より便利に出来ています。

test1.php を以下のようにしてください。

exec("/usr/local/bin/php ./test2.php aaa bbb" , $rec , $status);
if ($status != 0){
print "失敗しました";
exit(1);
}

test2.php は、

print $return_item;
exit();
?>

とした場合、
$rec に print で出力した結果が入っていると思います。

※注意

実をいうと $rec には意図した結果以外に色々なデータも入っています。
たとえば、test2.php で、

$aaa = "aaaa";

print $aaa;

とした場合、
$rec には、

$rec[0] : Content-type: text/html; charset=EUC-JP
$rec[1] : X-Powered-By: PHP/5.0.2
$rec[2] :
$rec[3] : aaaa

という値が入っています。
$rec[0] から $rec[2] までは環境によって違います。つまり、test2.php から受け取ったデータが $rec のどの要素に入っているかは、環境によって違ってきますので、まず、


exec("/usr/local/bin/php ./test2.php aaa bbb" , $rec , $status);
if ($status != 0){
print "失敗しました";
exit(1);
}
print_r($rec);


で、確認してみてください。

こんにちは。

CやJAVAやっていれば、すぐわかるのでしょうが・・・。
コマンドライン上からパラメータを渡す方法を考えてください。

PHPのようなC言語ライクな言語では慣用的に、

argv や argc といった「arg」が付く変数名が特別な扱い方をされます。
JAVAだと args ですね。
で、PHPだと、
$argv と $argc になります。

$argv は、引数で渡されたパラメータの配列です。
$argc は、パラメータの個数が格納されています。

パラメータの渡し方は、

"/usr/local/bin/php ./test2.php aaa bb...続きを読む

Qテーブルの最後(最新)のレコードを抽出したい

宜しくお願いします。
PHP MYSQL の組み合わせで使っています

以下のようにして、最後のレコードを取り出したいのですが
まったく違う事をしているのかもしれません。

$sql =" select * from テーブル where フィールド='max' " ;

フィールドはauto_incrementで番号を振っています。
これで最大のつもりなのですが・・・。

他にも、レコードを入れた時間も記録したフィールドがあるのですが
どうしてよいか?判りません。

テーブルの最新のレコードを出したいのです。
**その中の一つのフィールドを取り出すのですが、
  それはうまくいっているみたいです 
  (max の所に数字を入れると表示します)

お手数かけますが、どなたかご教授お願いいたします。

Aベストアンサー

#2回答者です。

MySQL 4.1以前(サブクエリを使えない)なら、以下のような方法が考えられます。

select * from 表名
order by 列名 desc limit 1

QID毎に最新の値を取得する

はじめて質問させていただきます。
現在、MySQLを使って会員管理用DBを作成しており、以下のようなテーブルを作っています。

ID | Name | Address | UpdateDate
1 | A | 東京 | 2009-10-10
1 | A | 福岡 | 2009-10-11
2 | B | 東京 | 2008-09-02

このようなID毎に複数のデータがある状態で、各IDの最新のデータのみを取得したいのですが、方法がわからずにいます。
大変初歩的な質問かもしれませんが、方法をご存じの方どうかご教授ください。
また、素人なもので、質問の方法が悪いかもしれません。その場合、ご指摘いただければ幸いです。

よろしくお願いします。

Aベストアンサー

>最新のデータのみを取得したい

SELECT * FROM hoge
WHERE (id,UpdateDate) IN
(SELECT id,max(UpdateDate) FROM hoge GROUP BY id)

Qサイトのphpソースコードを表示する方法

参考のためにサイトのphpソースコードを表示する方法を知りたいです。

ある参考書にこのような解説がありました。
『$con = mysql_connect("localhost","sampleID","samplepass");
のようにphp内に直接ユーザ名とパスワードを記載することはいけません。
なぜなら、phpファイルはブラウザからアクセスして見ることができるからです。
対策として、ユーザ名とパスワードを記載したiniファイルを作り、
それをドキュメントルートよりも上位の場所に置くと良いでしょう。』

ブラウザからアクセスして見ることができる、とありますが、
見ることが出来るのは開発担当者達ということでしょうか。

SQLiteのデータベースも同様にドキュメントルートよりも上位の場所に保存
とあるサイトで解説していましたが、専用のソフトとかありますか?

Aベストアンサー

サーバの環境設定や「.htaccess」ファイル等のようなもので間違った設定を行い、
***.phpファイルにアクセスされた場合にPHPとして動作せず
他のHTMLファイルやテキストファイルのようにダウンロード表示されてしまう可能性は多分にあります。
SQLiteのファイルやCSVなんかも、パーミッション等々、正しく設定していなかった場合、簡単にアクセスされてしまいます。

その為、少なくとも、ドキュメントルートより上に直接アクセスされたくないファイルなどを置いて、
require_once, require, include, include_once等によりPHPから参照したりするのが一般的、という事ではないでしょうか。


人気Q&Aランキング