PHP バックグラウンドで 5 分ごとに電子メールが送信されます
Jun 21, 2016 am 08:49 AM
1.5 分でメールが送信され、ファイルの内容は html モジュールによって生成されたテーブル
while(1)
{
//10分
var_dump("タスクを確認してください。閉じないでください");
//メールを送信
processDBData($db);
//在庫状態を処理します
processInventoryState($db,$tasks);
sleep(5*60);
}
//データベースからテーブルデータを読み取ります
関数 processDBData($db)
{
$testplan_id = '';
$temp = '';
$TotalCaseNum = 0;
$projectName = '';
// 完了したテスト計画テーブルを確認 -> タスク
$sql="SELECT TK.id,TK.send_email,TK.user_id,TK.build_id,TK.case_ids,TK.testplan_id,TK.flag,TK.total
タスクから AS TK WHERE current=total and flag='2' and ISNULL(send_email)";
$controlInfor = $db->get_recordset($sql);
if(null== $controlInfor)
{
戻る;
}
foreach($controlInfor as $key =>$item)
{
//モデルのHTMLを開く
$fModel = fopen("report.model","r");
if(null == $fModel)
{
var_dump("モデルなし");
}
$Modelhandle = fread($fModel,filesize("report.model"));
$test_cases = $item['case_ids'];
//合計数値を取得
$TotalCaseNum = (int)$item['total'];
//テストプランテーブル->テストプラン
//$sql = "SELECT ノート,testproject_id FROM テストプラン WHERE id='{$item['testplan_id']}'";
$sql = "nodes_hierarchy WHERE id='{$item['testplan_id']}'から名前を選択します";
$result = $db->get_recordset($sql);
$temp = str_replace("MODEL_TESLPLANE",$result[0]['name'],$Modelhandle);
$Modelhandle = $temp;
//製品テーブル->テストプロジェクト
$sql = "テストプロジェクト WHERE id='{$result[0]['testproject_id']}'" からノートを選択します。
var_dump($sql);
$result = $db->get_recordset($sql);
$temp = str_replace("MODEL_PRODUCTNAME",$result[0]['notes'],$Modelhandle);
$Modelhandle = $temp;
//テーブルを構築->構築
$sql = "SELECT DB.name FROM builds AS DB WHERE testplan_id='{$item['testplan_id']}' and id='{$item['build_id']}'";
$result = $db->get_recordset($sql);
var_dump($sql);
$temp = str_replace("MODEL_BUILD",$result[0]['name'],$Modelhandle);
$projectName = $result[0]['名前'];
$Modelhandle = $temp;
//テスト結果テーブル -> 実行
$cases = explode(',',$test_cases);
$case_infor = get_ts_name_details($db,$cases);
//var_dump(sizeof($case_infor));
//プロセス html テストケースのコンテンツ <!--3.テストケースのコンテンツ--> nl2br()
//コンテンツ追加後(table,body,html終了フラグ)
var_dump($case_infor);
$BeforSuiteNam = "";
$successNum = 0;
$TESTNUM = 0;
//var_dump($case_infor);
//var_dump($case_infor);
foreach($case_infor as $k=>$case)
{
$Modelhandle = $temp;
if($case['tsuite_name'] != $BeforSuiteNam)
{
$Modelhandle = $temp 。 "<tr><tdcolspan='3'><b>{$case['tsuite_name']}</b></td></tr>";
$temp = $Modelhandle;
}
//名前 + 重要度 + 結果を入力します
//var_dump(Integer.parseInt('c'));
//成功番号を取得
$sql="タスク AS TK WHERE current=total および flag='2 から TK.id,TK.send_email,TK.user_id,TK.case_ids,TK.testplan_id,TK.flag,TK.total,TK.user_id を選択します' ";
$controlInfor = $db->get_recordset($sql);
//合格/不合格情報を設定します
//var_dump($case['status']);
$pass = 'p';
$finish ='c';
if(($case['status'])== $finish)//$TotalCaseNum
{
// ケース情報を設定します
$Modelhandle = $temp. 「
<tr style="background-color:red">
<td>{$case['name']}</td>
<td>{$case['importance']}</td>
<td>終了</td>
</tr>";
}
else if($case['status'] == $pass)//$TotalCaseNum
{
$successNum++;
// ケース情報を設定します
$Modelhandle = $temp. 「
<tr>
<td>{$case['name']}</td>
<td>{$case['importance']}</td>
<td>パス</td>
</tr>";
}
それ以外
{
$Modelhandle = $temp. 「
<tr style="background-color:red">
<td>{$case['name']}</td>
<td>{$case['importance']}</td>
<td>失敗</td>
</tr>";
}
$temp = $Modelhandle;
$BeforSuiteNam = $case['tsuite_name'];
}
//成功数を設定
//var_dump($TotalCaseNum);
//$TotalCaseNum
$temp = str_replace("MODEL_SUCCESS","{$successNum}/{$TotalCaseNum}",$Modelhandle);
$Modelhandle = $temp;
$temp = str_replace("MODEL_FAIL",($TotalCaseNum-$successNum)."/".$TotalCaseNum,$Modelhandle);
$Modelhandle = $temp;
//HTML 終了記号を追加しました
$Modelhandle = $temp 。 "</table>
</body>
</html>";
$fHtml = fopen("report.html","w");
if(fwrite($fHtml,$Modelhandle))
{
fclose($fModel);
fclose($fHtml);
//die("创建html成功");
}
それ以外
{
fclose($fModel);
fclose($fHtml);
}
//メールアドレスを取得してメールを送信
$sql="SELECT email,group_email from users WHERE id={$item['user_id']}";
var_dump($sql);
$result = $db->get_recordset($sql);
if(SendEmail($result[0]['email'],$result[0]['group_email'],$projectName))
{
SignFinishEmail($db,$item['id']);
}
$successNum = 0;
}
//テストケースを取得
true を返します;
}
//署名終了メール送信フラグ
関数signFinishEmail($db,$TaskId)
{
$sql = "タスクを更新 SET send_email='1' WHERE id='{$TaskId}'";
//var_dump($sql);
$db->exec_query($sql);
戻る;
}
//メールコンテンツを作成します
関数 CreateHtml()
{
$fModel = fopen("report.model","r");
if($fModel)
{
$handle = fread($fModel,filesize("report.model"));
//var_dump($handle);
$fHtml = fopen("report.html","w");
if(fwrite($fHtml,$handle))
{
fclose($fModel);
fclose($fHtml);
}
それ以外
{
fclose($fModel);
fclose($fHtml);
die("HTML の作成成功");
}
}
戻る;
}
/*
関数: get_ts_name_details
引数:
戻り値: key=TCID
のマップ
値= assoc_array([tsuite_id => 5341
【詳細】=> ts1 としての私の詳細
[tcid] => 5343
[スイート名] => ts1)
*/
function get_ts_name_details(&$db,$tcase_id)
{
$tables = array();
$termCase = $tcase_id;
$tables['testsuites'] = DB_TABLE_PREFIX 。 'テストスイート';
$tables['nodes_hierarchy'] = DB_TABLE_PREFIX 。 'nodes_hierarchy';
$rs = '';
$do_query = true;
$sql = "SELECT TS.id AS tsuite_id、TS.details、TCS.status、
NHA.id AS tc_id、NHA.name、NHB.name AS tsuite_name、TV.importance
{$tables['testsuites']} TS、{$tables['nodes_hierarchy']} NHA、
から
{$tables['nodes_hierarchy']} NHB、tcversions TV、実行 TCS
WHERE TS.id=NHA.parent_id
および NHB.id=NHA.parent_id
かつ TCS.tcversion_id=NHA.id+1
AND TV.id=NHA.id+1";
if( is_array($tcase_id) && count($tcase_id) > 0)
{
//ノート開始ノード
$tcase_id[count($tcase_id)-1] -= 1;
$in_list = implode("-1,",$tcase_id);
$sql .= " AND NHA.id IN (" . $in_list . ")";
}
else if(!is_null($tcase_id))
{
$sql .= " AND NHA.id={$tcase_id}";
}
それ以外
{
$do_query = false;
}
if($do_query)
{
var_dump($sql);
$rs = $db->fetchRowsIntoMap($sql,'tc_id');
}
$rs を返します;
}
//メールを送信
関数 SendEmail($emailAdress,$groupEmail,$projectName)
{
$MailTital="HATP:".$projectName;
var_dump($groupEmail);
if($emailAdress=="")
{
false を返します;
}
if(null !=$groupEmail)
{
//var_dump("ここで実行");
$ReciveEmails =explode(";",$groupEmail);
}
//メール情報を処理します
$mail = 新しい PHPMailer(true); //例外を有効にした新しいインスタンス
$body = file_get_contents('report.html');
//var_dump($body);
$body = preg_replace('/\\/','', $body); // バックスラッシュを削除します
$mail->IsSMTP(); // SMTP を使用するようにクラスに指示します
$mail->SMTPAuth = true; // SMTP 認証を有効にする
$mail->ポート = 25; // SMTP サーバーのポートを設定します
$mail->ホスト = "172.20.0.6"; // SMTP サーバー
$mail->ユーザー名 = "bugfree@hojy.com"; // SMTP サーバーのユーザー名
$mail->Password = "バグフリー"; // SMTP サーバーのパスワード
$mail->From = "テストリンク";
$mail->FromName = "テストリンク";
$mail->件名 = $MailTital;
$mail->AltBody = "メッセージを表示するには、HTML 互換の電子メール ビューアを使用してください!"; // オプション、コメントアウトしてテストします
$mail->WordWrap = 80; // ワードラップを設定します
$mail->MsgHTML($body);
$mail->IsHTML(true); // HTMLとして送信
//テスターを追加
$ReciveEmails[sizeof($ReciveEmails)] = $emailAdress;
var_dump($ReciveEmails);
foreach($ReciveEmails as $K=>$Item)
{
var_dump($Item);
$mail->AddAddress($Item);//送信者
}
試してみてください
{
$mail->Send();
}
catch (phpmailerException $e)
{
echo $e->errorMessage();
false を返します;
}
$ReciveEmails='';
TRUE を返します;
}

人気の記事

人気の記事

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Windows 11 でウィンドウの境界線の設定を調整する方法: 色とサイズを変更する

Windows 11でタイトルバーの色を変更するにはどうすればよいですか?

Windows 11 でタスクバーのサムネイル プレビューを有効または無効にする方法

Windows 11/10修復におけるOOBELANGUAGEエラーの問題
