PHP 定時執行 [轉載]

來源:互聯網
上載者:User

 

我們在做一個php 郵件發送問題是常常會遇見這樣的問題,就是使用者訂閱一些資料需要定時發送到使用者的郵箱中去。去網上搜尋了一下,發現在這樣的文章不多,本文介紹了一種用PHP實現的方法,筆者用PHP的時間不長,歡迎大家PP。
一、要實現定時發送,主要解決問題是定時。

我們在寫程式時需要加個什麼if 某個時間=某個時間則發送,可是要實現這個過程,面臨的問題是,我們要執行這個頁面才能發送。所以主要解決的問題是怎麼到時讓伺服器定時執行這個頁面,這樣實現起來好像比較困難。

二、我翻開PHP手冊,找到了PHP 的命令列模式這一章,發現能解決這一問題,建議大家如果想用這個方法的話先看看這一章。

三、解決方案:

1、在 Windows 平台下您可以將cli\php.exe 和 .php 檔案的雙擊屬性相關聯,您也可以編寫一個批次檔來用 PHP 執行指令碼。我們把寫好的程式放在一個目錄下如 E:\web\mail.php

然後寫一個windows批次檔內容如下。

@D:\php\cli\php.exe E:\web\mail.php >d:\php\cli\sendmail.log

Pause

那個D:\php\cli\php.exe是我的PHP安裝檔案所在目錄。Php.exe就是windows PHP命令列模式的程式。

好的,我們儲存這個檔案為mail.bat然後的windows中的計劃任務中添加一個任務,讓作業系統在某個時間來運行這個批次檔。

2、如果您使用 Unix 系統,您需要在您的 PHP 指令碼的最前面加上一行特殊的代碼,使得它能夠被執行,這樣系統就能知道用什麼樣的程式要運行該指令碼。為 Unix 系統增加的第一行代碼不會影響該指令碼在 Windows 下的運行,因此您也可以用該方法編 寫跨平台的指令碼程式。以下是一個簡單的PHP 命令列程式的範例。

四、例子:

E:\web \Timesend.php

#!/usr/bin/php

<?php

require_once("E:\web\includes\config.php");

require_once("E:\web\includes\class\mail.class.php");

require_once("E:\web\includes\class\smtp.class.php");

// +----------------------------------------------------+

//資料庫配置

$dbhost = "localhost";

$dbport = "3306";

$dbname = "";

$dbuser = "";

$dbpawd = "";

// +----------------------------------------------------+

//資料庫連接對象

$db = new dbLink($dbhost,$dbport,$dbuser,$dbpawd,$dbname);

$query = "SELECT * FROM wl_mailtemplate WHERE mt_name = 'UserUpdate'";

$mailtemplate =$db->dbQuery($query);

$username = ‘sdfsdfdsd’;

$sex = “先生”;

$accounts = “sdfasdfasdfsad”;

$password = “sdfsadfsdasdasddssfds”;

$message = “

” . $mailtemplate[0]['mt_message']. “

“;

$message = addslashes($message);

eval(“\$message = \”$message\”;”);

$mail = new SendMail(‘wfits@126.com’, $mailtemplate[0]['mt_subject'], nl2br($message));

if ($mail->Send())

{

$feedback = “修改確認資訊已發送到您的註冊Email,當前登入已被登出。\\n請注意查收確認信,並取得新的登入密碼。”;

echo $feedback;

}

?>

寫個bat檔案。

@D:\php\cli\php.exe E:\web\mail.php >d:\php\cli\sendmail.log

Pause

儲存為:timesend.bat放在@D:\php\cli\php.exe目錄下

在window中添加計劃任務,然後就可以啦!

五、說明。

1、 我發送郵件用的是模板在資料庫中存著,還有兩個郵件發送類就不提供了,要的話可以聯絡我。

2、 在使用requrie_once時要用絕對路徑。

3、 PHP 的命令列模式能使得 PHP 指令碼能完全獨立於 WEB 伺服器單獨運行,所以要是大量發送郵件時就能減輕伺服器負擔。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.