初心者です。
cronでphpを実行しよとしています。
phpの中身はAPIの情報をもらって、それをforeachとif文で
一部の欲しい情報だけ変数に格納して、それをcurl先に表示できるようにしようとしています。
vagrantで行うと変数の中身の表示してくれるのですが。
cronで行うと変数の中身が表示されないので、
アドバイスください。
※test.phpはAPIの情報をもらってきて、jsonデータで連想配列のデータがdataファイルに格納される内容。
php
1#!/usr/bin/php 2<?php 3require "test.php"; 4$dat = array(); 5foreach(glob('data/*.json') as $file){ 6 if(is_file($file)){ 7 $files = file_get_contents($file); 8 $data = mb_convert_encoding($files, 'UTF8', 'ASCII,JIS,UTF-8,EUC-JP,SJIS-WIN'); 9 $array = json_decode($data, true); 10 if($array === NULL){ 11 continue; 12 } 13 14 foreach($array as $key =>$value){ //全体のループ 15 foreach($value["データ1"] as $key2 =>$value2){ //データ1の下のループ 16 $count = array(); //配列データリセット 17 $count = array_column($value2["データ2"],'code'); //コードのデータだけを配列で 18 $output = array_count_values($count); //個数をカウント関数で 19 $tim = array(); 20 $tim = array_column($value2["データ2"],'time','code'); //codeをキーにtimeを値に指定した配列 21 22 23 date_fomat($tim[2], 'H:i:s') 24 $date1 = date($tim[1]); 25 $date2 = date($tim[2]); 26 $diff_hour = (strtotime($date2) - strtotime($date1)) / 3600; 27 28 29 30 31 //日付のデータ 32 $day = $value2["データ3"]; 33 $datetime = new DateTime($day); 34 $week = array("日", "月", "火", "水", "木", "金", "土"); 35 $w = (int)$datetime->format('w'); 36 $weekDay = $week[$w]; 37 38 if(!isset($output[1]) || !isset($output[2])){ どちらかのデータがあれば 39 array_push($dat, array( 40 'date' => $value2["データ3"], 41 'division' => $value2[データ4"]['データ5'], 42 'name' => $value2["データ4"]["データ6"] . $value2["データ4"]["データ7"], 43 'comment' => 'コメント' 44 ) 45 ); 46 } if(!isset($output[3]) || !isset($output[4]) ||$output[3] !== $output[4]) { 47 if($weekDay !== "土"){ //土曜日以外 48 if($weekDay !== "日"){ 49 if($diff_hour >= 6){ 50 array_push($dat, array( 51 'date' => $value2["データ3"], 'division' => $value2["データ4"]['データ5'], 52 'name' => $value2["データ4"]["データ6"] . $value2["データ4"]["データ7"], 53 'comment' => 'コメント2' 54 ) ); 55 } 56 } 57 } 58 } 59 } 60 } 61 } 62 } 63$url = '表示先のURL'; 64$content =''; 65 66 67foreach($dat as $key => $value) { 68 69 $content = $content . $value["データ3"] . $value["データ5"] . $value["データ8"]. '<br>' . $value["データ9] . '<br>'; 70 } 71$message = array( 72 73 "text" => '<h1>【自動アラートテスト】</h1><br>'. $content 74); 75 76// メッセージをjson化します 77$message_json = json_encode($message); 78 79 80 81 82$ch = curl_init(); 83curl_setopt($ch, CURLOPT_URL, $url); 84curl_setopt($ch, CURLOPT_POST, true); 85curl_setopt($ch, CURLOPT_POSTFIELDS, $message_json); 86curl_exec($ch); 87curl_close($ch); 88
crontab -eの設定
MAILTO=メールアドレス SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin CRON_TZ=Asia/Tokyo * * * * * php /home/vagrant/php_lessons/index.php
回答1件