iT邦幫忙

2

[php] 背景程式

各位大大好:

想請問如果不讓網頁開啟就可以執行,是否用背景程式就可以?

背景程式是否也可以將資料寫入資料庫中(mysql)呢?

<?php
ignore_user_abort();
set_time_limit(0);
$interval=60*15;
do{
//執行的業務
}while(true);
?>

主要是讓授權者授權代理人,網頁可不斷更新最新的審核流程
ex:A/B/C/D E代理B後變 A/E/C/D 網頁立即偵測代理結束時間 改回原始A/B/C/D
https://ithelp.ithome.com.tw/upload/images/20200330/20097057ZMG6mYFJlJ.jpg

謝謝

看更多先前的討論...收起先前的討論...
froce iT邦大師 1 級 ‧ 2020-03-31 04:21:26 檢舉
> 主要是讓授權者授權代理人,網頁可不斷更新最新的審核流程
> ex:A/B/C/D E代理B後變 A/E/C/D 網頁立即偵測代理結束時間 改回原始A/B/C/D

我不知道你把這隻程式分開你要怎麼叫使用者更新頁面,但這照理來說不是使用者的頁面上做輪詢,就是做websocket,應用chat room來廣播,都是在使用者前端做的事吧...
echochio iT邦高手 1 級 ‧ 2020-03-31 08:25:47 檢舉
應該您沒寫過 script 的 php
可以用比較簡單的方式解決....
應該代理結束的時間有個觸發
將這個觸發放入排程改回原流程
每分鐘排程寫 ....
curl http://127.0.0.1/test.php

去檢查資料庫看看是否有代理結束的要還原成原本的
mayyola iT邦研究生 2 級 ‧ 2020-03-31 08:46:22 檢舉
F大您好:
我本來是想說要用背景程式持續偵測..偵測到代理結束後寫入資料庫,使用者登入時馬上就有從資料庫的資料載入流程..

e大您好:我也有這樣想,用php偵測,在工作排程器開啟test.php發現代理結束就改回流程寫入資料庫

謝謝
froce iT邦大師 1 級 ‧ 2020-03-31 11:16:18 檢舉
> 使用者登入時馬上就有從資料庫的資料載入流程

看起來你並不是要等代理結束時間一過,立刻通知還在線上的使用者更新資料?
而是只要在使用者登入時,能知道代理者資訊?

你資料表裡應該就有代理結束時間吧?差假是另一套系統?
是的話建議在差假系統動手,主動 send message。
輪詢的話就要注意時間間隔,如果太頻繁,對server來說也不好。
mayyola iT邦研究生 2 級 ‧ 2020-04-01 21:51:22 檢舉
f大您好:
1.使用者填資料表,裡面就會把當下的審核流程載入(主要是使用者送出後會email給第一個審核人A然後A簽完核可,依序送B、C、D)
2.準備建置審核流程表ex:欄位填寫A/B/C/D,若有出現代理人則新增一行A/E/C/D
然後註記代理開始跟結束時間
3.若用底下各位大大的方式,大概就是寫一個php+bat檔+win排程器去偵測代理開始跟結束時間,以便更換審核流程順序,但如您所說要設定多久偵測一次..太頻繁不太好,代理可能代半天或幾小時,若排程器設置每天驅動php一次,那代理半天或幾小時的可能就偵測不到..
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
1
dragonH
iT邦超人 5 級 ‧ 2020-03-30 21:27:31
最佳解答

想請問如果不讓網頁開啟就可以執行,是否用背景程式就可以?

當然可以

這樣就是 php script

沒有人說 php 只能寫 web

定時的 task

通常搭配 cron job 使用

附上簡單範例

<?php
    $conn = new PDO('mysql:host=localhost;dbname=demo;charset=utf8', 'root', '');
    $queryStatement = 'SELECT * FROM guests';
    foreach($conn->query($queryStatement) as $row) {
        print_r($row);
    }

img

mayyola iT邦研究生 2 級 ‧ 2020-03-30 21:31:28 檢舉

請問第一次執行一定要開啟網頁嗎?關閉網頁後是不是他就可以一直執行下去?一定要搭配工作排程嗎(例如在winserver設定哪個時間php執行)?

應該也可以將資料寫入mysql? 謝謝

dragonH iT邦超人 5 級 ‧ 2020-03-30 21:52:46 檢舉

請問第一次執行一定要開啟網頁嗎

不用

關閉網頁後是不是他就可以一直執行下去

是 如果你正確操作的話

一定要搭配工作排程嗎

你沒要排程執行就不用

應該也可以將資料寫入mysql

當然

1
舜~
iT邦高手 1 級 ‧ 2020-03-31 00:32:27
mayyola iT邦研究生 2 級 ‧ 2020-04-01 22:39:57 檢舉

謝謝

0

認真來說,php本來就不需要瀏覽器來打開了。
它本身就是一個應用程式。

一般是php去輸出html來給瀏覽器用的。

你可以先用簡單的php程式碼如下,並命名為test.php

<?php
    $a=0;
   while(1){
      $a++;
      echo "\n".$a;
      sleep(1);
   }
?>

然後再從黑盒子。windows的話就是cmd或是power shell。linux就單純跑ssh或命令式
下達「php test.php」(路徑運行路徑自行解決)

我只說個大約。其它還有許多方法可以應用。

我要發表回答

立即登入回答