2015-11-16 50 views
1

我想讓我的服務器發送給我e-mails生日提醒的基礎上,我的網站託管服務提供商的服務器上的數據庫中的生日日曆。我知道如何從PHP發送e-mails,但只能作爲客戶端按鈕單擊後的操作。這也是執行我能找到的行動的唯一方法。如何根據日期/時間執行PHP操作?

如何在沒有用戶交互的情況下在特定的date/time上向我發送e-mail服務器?

編輯
我不認爲我的問題是重複的。推測的重複鏈接指的是關於cron的問題,答案是關於語法,但它並不能解釋cron是如何工作的,或者我可以如何使用它來解決問題。

+4

您可以設置cron作業發送電子郵件 – Apb

+2

[php cron作業每隔10分鐘]可能重複(http://stackoverflow.com/questions/1830208/php-cron-job-every-10-minutes) – Machavity

+0

是Joris在服務器中有一個選項來設置任何時間間隔的cron作業文件。你應該去做。 –

回答

0

詳述Apb給出的評論;

  1. 創建內容的PHP文件(腳本部分的按鈕)
  2. 使用cron for linux os或者如果你在windows執行你的PHP腳本

另一種選擇是setcronjob.com回答由Santosh Achari於enter link description here問題

+0

哪裏我把這個嗎?我所擁有的是我的網頁主機上的網頁目錄。 –

+0

請檢查您的虛擬主機幫助,他們必須提供cron選項 – davejal

0

你可以在命令行上寫一個php腳本執行。要運行命令行PHP腳本,你只需要使用php命令:

php myscript.php 

在這個例子中,如果myscript.php擁有所有的邏輯來發送電子郵件,那麼你只需設置一個cron作業自動曾經執行的文件一天,或每一小時(但通常你會希望它執行)。然後,您只需將邏輯寫入您的PHP腳本以檢查是否發送其中一封電子郵件的「時間」。

爲php腳本設置cron作業的answer on this post has a great explanation

0

正如其他所說的cronjobs是實現這一目標的好方法。

例如(很殘留的)的script.php

include '../connect.php'; 
$birthday_list =[]; 
$today = date("m.d.y"); 


try {   
    $sql = "SELECT `Birthday`, `Name`, `Surname`, FROM `Friends` WHERE Friends.Birthday = '$today'";    
    foreach ($conn->query($sql) as $row) {   
     $temp = [$row['Birthday'],$row['Name'],$row['Surname']]; 
     $birthday_list[] = $temp;     
        }  
      } 
    catch(PDOException $e) 
     { 
     echo "Connection failed: " . $e->getMessage(); 
    } 

foreach ($birthday_list as $el){ 
    $name = $el[1]; 
    $surname = $el[2]; 
    $message = 'Todays is'.$name.' '.$surname.' birthday'; 
    mail('[email protected]', 'My Subject', $message); 
} 

然後你就可以運行該腳本的cronjob,一些hostings(GoDaddy的舉例)允許您設置從的cPanel crons,否則你必須從服務器shell中設置cron。