→ s66449:我有疑問耶...因為我是第一次寫這東西 到底那隻xx.php 02/18 00:47
→ s66449:長怎樣???我直接用cron去執行我那個網頁就好了 為什麼還要 02/18 00:48
→ s66449:再寫一隻xx.php去執行我那個網頁?? 02/18 00:49
→ s66449:我有嘗試去google 可是我不知怎麼下關鍵字> < 02/18 00:51
→ s66449:找到的都不是我要的 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
推 s66449:謝謝你這麼熱心...我有個疑問 試著在shell下執行我那個php 02/18 12:11
→ s66449:結果執行的結果指示出現整個網頁的原始碼 而不是按了scan 02/18 12:12
→ s66449:button 完後的結果 是我那個網頁還得要做什麼設定嗎?? 02/18 12:12
這我可能沒注意到
你的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)
推 s66449:我有點搞混了...怎麼又會多一個scan.php 總共要寫三個php嗎 02/18 19:01
→ s66449:fromCron.php就是ㄧ個空白網頁 然後裡面都是去執行web.php 02/18 19:02
→ s66449:使用者要求的東西嗎?? 02/18 19:03
→ s66449:還想要一下@@" 因為你說在shell下執行php的話 因為沒瀏覽器 02/18 19:04
→ s66449:支援 所以執行結果都是整個畫面的程式碼 要是有人說一個 02/18 19:04
→ s66449:php程式能不能在shell下執行 只要能跑出網頁原始檔就代表 02/18 19:05
→ s66449:這支php是可以在shell執行的意思嗎?? 02/18 19:05
推 s66449: 最後打的那段cron跟前面的* * * * * /usr/local/bin/php.. 02/18 19:11
→ s66449:有什麼不同??不都是任何時間去檢查fromCron這隻網頁嗎?? 02/18 19:12
→ s66449:ㄧ直問...真是不好意思> < 02/18 19:13
→ weiyucsie:那... 你再描述一下你目前想的好了>.< 02/18 20:09
→ weiyucsie:沒什麼不同 只不過一個是經過網頁伺服器(wget) 02/18 20:10
→ weiyucsie:一個沒有 02/18 20:10
推 s66449:我想把我理解的講出來 不知道有沒有誤解你的意思 02/18 22:33
→ s66449:我就再寫一隻formCron.php程式 然後再去主機加上 02/18 22:34
→ s66449:* * * * * /usr/local/bin/php /我的路徑/fromCron.php 02/18 22:34
→ s66449:讓fromCron每天不斷的去check web.php看使用者有沒有按下 02/18 22:35
→ s66449:scan button 然後去執行使用者要求的東西 02/18 22:37
→ s66449:然後因為我所有執行的指令都在web.php 所以我得要再把 02/18 22:38
→ s66449:那些指令程式碼寫進fromCron.php 是這樣嗎?? 02/18 22:39
→ s66449:那我那個網頁是要user輸入定時掃瞄時間的 那要怎麼跟 02/18 22:41
→ s66449:fromCron.php網頁做結合呢?? 02/18 22:43
→ weiyucsie:"check web.php看使用者有沒有按下scan button" 關於這 02/18 23:48
→ weiyucsie:我是想說 scan button是即時的掃描 02/18 23:48
→ weiyucsie:(這邊你的掃描應該等於執行的動作吧?) 02/18 23:48
→ weiyucsie:fromCron.php則是使用者送出資料後,時間到才去執行的 02/18 23:49
→ weiyucsie:所有執行的指令都在web.php 要寫進fromCron.php 02/18 23:50
→ weiyucsie:這是我想說額外存一個php,其他兩個php用require的部份 02/18 23:51
→ weiyucsie:你的fromCron寫進crontab後,每分鐘會被執行 02/18 23:52
→ weiyucsie:那就看你怎麼判斷要不要執行 來達到所指定的幾分鐘 02/18 23:55