私はCRONプロセスをやっている中でまだ新しいので、私はこれにいくつかの助けが必要です。 私は1052の電子メールと思う多くの電子メールを持っています。私の計画私は週に2回送ろうと思っています。私は火曜日と木曜日に設定します。私はそれがサーバープロセスを強調すると思うので、私は間隔を作ることができるように。私が間違っていれば私を修正してください。 1日あたり70件のメールがあるので、1時間に10件のメールが送信されます。ここに私のテーブル構造があります。デフォルトでCRONを使用して1週間に1回ループして実行できるPHPスクリプトを作成する方法は?
+-----------+--------------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+--------------------------+------+-----+---------+----------------+
| id | int(4) unsigned zerofill | NO | PRI | NULL | auto_increment |
| client_id | int(10) unsigned | NO | | NULL | |
| email | varchar(100) | NO | | NULL | |
| sent | tinyint(1) unsigned | YES | | 0 | |
| sent_date | date | YES | | NULL | |
| excluded | tinyint(1) unsigned | YES | | 0 | |
+-----------+--------------------------+------+-----+---------+----------------+
特定の電子メールが送信された場合sent
列は(デフォルトは0)1
に変更されます。メールの送信が完了したら、sent column
のメールはすべて0
に再度送信されます。そのプロセスで私は疑問を持っていません。
私の問題は、1時間ごとにループするPHPスクリプトを作成し、翌日(火曜日と木曜日)に実行する方法です。 私のPleskパネルでは、毎日実行する簡単なcronを設定しました。
私はこれにCodeIgniterを使用しています。電子メールを送信する際にはコードがありますが、すべてのクライアントが送信されます。私はちょうど毎時10の電子メールを送りたいと思う。
public function sendEmail() {
$subj = $this->input->post('email_subject');
$from = '[email protected]';
$cc = $this->input->post('email_cc');
$data['subject'] = $subj;
$content = $this->input->post('email_body');
$this->load->library('email');
$config = array(
'protocol' => 'sendmail',
'smtp_host' => 'mail.sample.ph',
'smtp_port' => 587,
'mailtype' => 'html',
'charset' => 'utf-8'
);
$this->email->initialize($config);
$email_list = $this->getClientEmails(); //all email for now
$valid_email = array();
$invalid_email = array();
if(count($email_list) > 0) {
for($x = 0; $x < count($email_list); $x++) {
if(valid_email($email_list[$x]['email'])) {
$valid_email[] = $email_list[$x]['email'];
}
//get all invalid emails
/*else {
$invalid_email[] = array(
'id' => $email_list[$x]['id'],
'email' => $email_list[$x]['email']
);
}*/
}
}
$email_string = implode(',', $valid_email);
fd($email_list);
$this->email->set_mailtype("html");
$this->email->from($from, 'SAMPLEAdmin');
$this->email->to($email_string); //get all emails from client
$this->email->cc('[email protected]');
$this->email->subject($subj);
$this->email->message($content);
$send_mail = $this->email->send();
if($send_mail) {
fp('success');
} else {
fp('failed');
}
echo $this->email->print_debugger();
}
私が本当に欲しいものを理解していただければ幸いです。何か誤解がある場合は、私に知らせてください。
ありがとうございました。