Re: [請益] 用php去設定cron

看板PHP作者 (選擇那刻 才算開始)時間16年前 (2010/02/18 02:31), 編輯推噓4(4029)
留言33則, 2人參與, 最新討論串2/2 (看更多)

02/18 00:47,
我有疑問耶...因為我是第一次寫這東西 到底那隻xx.php
02/18 00:47

02/18 00:48,
長怎樣???我直接用cron去執行我那個網頁就好了 為什麼還要
02/18 00:48

02/18 00:49,
再寫一隻xx.php去執行我那個網頁??
02/18 00:49

02/18 00:51,
我有嘗試去google 可是我不知怎麼下關鍵字> <
02/18 00:51

02/18 00:51,
找到的都不是我要的
02/18 00:51
假設我們有兩隻php,一隻是web.php,一隻是fromCron.php web.php:使用者操作,儲存資料 fromCron.php:讀取資料,進行使用者指定動作 (我是覺得寫在一起很怪啦,也不是不能寫在一起) crontab裡面可能有一行 * * * * * /usr/local/bin/php /我的路徑/fromCron.php 然後 fromCron.php可能 $data = 讀取資料(); if (時間是使用者指定的時間) { 進行動作 } 這是我的想法啦(沒想到還是要多發一篇@.@) xx.php執行的是使用者要求的東西 不是執行那個網頁 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 125.231.172.151

02/18 12:11, , 1F
謝謝你這麼熱心...我有個疑問 試著在shell下執行我那個php
02/18 12:11, 1F

02/18 12:12, , 2F
結果執行的結果指示出現整個網頁的原始碼 而不是按了scan
02/18 12:12, 2F

02/18 12:12, , 3F
button 完後的結果 是我那個網頁還得要做什麼設定嗎??
02/18 12:12, 3F
這我可能沒注意到 你的web.php可能除了 操作、儲存 外 還有執行的動作 但是php cli模式下,就當成一般的script執行 web上的<html>等標籤,在cli模式下,因為沒有瀏覽器解釋 所以都是直接吐給你看的 (所以其實你要將fromCron.php改用其他語言, 變成fromCron.pl,或是寫成執行檔,其實也沒差, 只不過反正web都用php寫了,fromCron的部份用php寫, 資料庫的存取就不用另外再學一套...如果用的是資料庫的話:p 另外一點是,你的執行部分共用比較彈性) 假設web.php的內容是: [code] <?php if (GET或POST輸入) { 依據GET或POST動作 *包含儲存動作 *執行(scan) } ?>呈現頁面 [/code] 那我們就必須把執行的部份區分出來 可能是另外一個頁面,或是額外的function (這邊參數自己看要哪些, 怎麼處理,這裡只是範例) scan.php [code] function scan($host, $port) { ... } [/code] web.php的部份 執行就改成 [code] require('scan.php'); scan($host, $port); [/code] 然後fromCron.php的進行動作部分 可能就改成 [code] require('scan.php'); scan($host, $port); [/code] 這樣之類的... 如果不懂php-cli的話 其實還有個方法,比較耗費資源 你把執行部分額外變成一個可以執行的網址 就可以寫成一般網頁的形式XD (不過內容無意義就是了) crontab的內容可能是 * * * * * wget http://localhost/PATH/fromCron.php 就是crontab去抓網頁 (當然這樣可能會多抓網頁就是了XD) ps.以上提的也只是一種實作方法啦 ※ 編輯: weiyucsie 來自: 125.231.174.29 (02/18 14:05)

02/18 19:01, , 4F
我有點搞混了...怎麼又會多一個scan.php 總共要寫三個php嗎
02/18 19:01, 4F

02/18 19:02, , 5F
fromCron.php就是ㄧ個空白網頁 然後裡面都是去執行web.php
02/18 19:02, 5F

02/18 19:03, , 6F
使用者要求的東西嗎??
02/18 19:03, 6F

02/18 19:04, , 7F
還想要一下@@" 因為你說在shell下執行php的話 因為沒瀏覽器
02/18 19:04, 7F

02/18 19:04, , 8F
支援 所以執行結果都是整個畫面的程式碼 要是有人說一個
02/18 19:04, 8F

02/18 19:05, , 9F
php程式能不能在shell下執行 只要能跑出網頁原始檔就代表
02/18 19:05, 9F

02/18 19:05, , 10F
這支php是可以在shell執行的意思嗎??
02/18 19:05, 10F

02/18 19:11, , 11F
最後打的那段cron跟前面的* * * * * /usr/local/bin/php..
02/18 19:11, 11F

02/18 19:12, , 12F
有什麼不同??不都是任何時間去檢查fromCron這隻網頁嗎??
02/18 19:12, 12F

02/18 19:13, , 13F
ㄧ直問...真是不好意思> <
02/18 19:13, 13F

02/18 20:09, , 14F
那... 你再描述一下你目前想的好了>.<
02/18 20:09, 14F

02/18 20:10, , 15F
沒什麼不同 只不過一個是經過網頁伺服器(wget)
02/18 20:10, 15F

02/18 20:10, , 16F
一個沒有
02/18 20:10, 16F

02/18 22:33, , 17F
我想把我理解的講出來 不知道有沒有誤解你的意思
02/18 22:33, 17F

02/18 22:34, , 18F
我就再寫一隻formCron.php程式 然後再去主機加上
02/18 22:34, 18F

02/18 22:34, , 19F
* * * * * /usr/local/bin/php /我的路徑/fromCron.php
02/18 22:34, 19F

02/18 22:35, , 20F
讓fromCron每天不斷的去check web.php看使用者有沒有按下
02/18 22:35, 20F

02/18 22:37, , 21F
scan button 然後去執行使用者要求的東西
02/18 22:37, 21F

02/18 22:38, , 22F
然後因為我所有執行的指令都在web.php 所以我得要再把
02/18 22:38, 22F

02/18 22:39, , 23F
那些指令程式碼寫進fromCron.php 是這樣嗎??
02/18 22:39, 23F

02/18 22:41, , 24F
那我那個網頁是要user輸入定時掃瞄時間的 那要怎麼跟
02/18 22:41, 24F

02/18 22:43, , 25F
fromCron.php網頁做結合呢??
02/18 22:43, 25F

02/18 23:48, , 26F
"check web.php看使用者有沒有按下scan button" 關於這
02/18 23:48, 26F

02/18 23:48, , 27F
我是想說 scan button是即時的掃描
02/18 23:48, 27F

02/18 23:48, , 28F
(這邊你的掃描應該等於執行的動作吧?)
02/18 23:48, 28F

02/18 23:49, , 29F
fromCron.php則是使用者送出資料後,時間到才去執行的
02/18 23:49, 29F

02/18 23:50, , 30F
所有執行的指令都在web.php 要寫進fromCron.php
02/18 23:50, 30F

02/18 23:51, , 31F
這是我想說額外存一個php,其他兩個php用require的部份
02/18 23:51, 31F

02/18 23:52, , 32F
你的fromCron寫進crontab後,每分鐘會被執行
02/18 23:52, 32F

02/18 23:55, , 33F
那就看你怎麼判斷要不要執行 來達到所指定的幾分鐘
02/18 23:55, 33F
文章代碼(AID): #1BV3OCL- (PHP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1BV3OCL- (PHP)