簡體   English   中英

是否可以在服務器上運行帶有 HTML 的 PHP 文件

[英]Is it possible to run a PHP file with HTML on the server

Normally when you have a .PHP file and the client request it, the PHP code is run on the server and the HTML and JavaScript are sent to the client.

問題

是否可以讓服務器請求網頁(本地)並在服務器上同時運行PHP代碼和HTMLJavaScript 我創建了一個.html文件,在本地處理 3 秒后,該文件會為給定視頻的縮略圖創建圖像數據。

為什么

我需要為視頻生成縮略圖。 我使用了共享主機,而我的主機提供商不支持ffmpeg 但是,您可以使用canvasJavaScript生成縮略圖。 我已經給客戶施加了很大的壓力。 如果可能,上傳和下載時間將比使用客戶端短得多。

嘗試

我試過使用file_get_contents() ,但它不運行代碼(有意義)。 有沒有辦法讓它打開並運行x秒然后抓取內容?

我試過在這里使用 curl 來獲取使用此 function的文件。 我相信它與我之前的嘗試類似,因為它獲取文件內容,但從不執行它們。

我最后的嘗試是使用new DOMDocument() 我什至無法加載頁面。 首先,我無法用video標簽解析它。 它給出了這個錯誤:

Warning: DOMDocument::load(): Specification mandates value for attribute controls in 
file:\path\to\html\document.html, line: 53 in C:\path\to\php\document.php on line 50

如果我要刪除視頻標簽(這是必需的),我會在解析 JavaScript 時出錯。 所以這種嘗試也沒有奏效。


有沒有辦法讓 PHP 在獲取內容之前處理代碼(服務器上的某些內容) x秒? 它將留出時間來生成縮略圖數據。 如果有另一種方法可以做到這一點而不在服務器上使用ffmpeg ,那就太好了。

所以正如我在評論中提到的,我要解釋的只是一個選項(不是最好的選項,只是回答您運行 html 代碼的需要!)

在哪里做這個?

就我個人而言,我寧願在管理員的瀏覽器上傳視頻時這樣做,最好的事情是你可以在發布過程中這樣做。
因此,在您希望完成此過程的頁面中,像這樣放置一個不可見的 iframe。

<iframe id="myIframe" style="display: none;"></iframe>

如何開始這個過程?

我不知道你用來上傳視頻的方式(它真的沒那么重要。)但讓我們假設你想使用 formdata。 視頻上傳后,你需要知道一些獨特的視頻地址(比如說一個id),所以在視頻上傳后,我們可以得到一個類似id:20, initiateThumbnail:true作為結果json數據。 然后我們可以簡單地使用隱藏的 iframe 作為您一直要求的瀏覽器,如下所示:

$("#myIframe").attr("src","dothething.php?video=20");

現在做任何你想做的事情,並在完成后更改它的內容。 現在你需要等待結果!

$('#myIframe').load(()=>{
    let result = $("#myIframe").contents();
    // checking result!
});

正如您已經想到的,您可以通過處理結果來處理任何錯誤。

筆記

  1. 當您開始制作縮略圖時,我們用於 iframe ( iframe.load ) 的事件監聽器也會觸發。 所以要小心檢查結果的過程(那個 iframe 的內容!)
  2. 如果您不使用 ajax 或 formdata,那么您的表單操作就是我使用的 iframe。
  3. 一個問題? 如果在此過程中網絡連接中斷會怎樣? 簡單的回答。 您可以通過多種方式檢查縮略圖是否存在。 如果沒有,您可以在用戶在其瀏覽器中請求它並將其上傳回服務器並永久保存時創建它(就像您在管理員面板中所做的那樣!)

我認為沒有其他方法可以在 php 服務器上生成縮略圖,而不是使用 ffmpeg。 我想,你唯一能做的就是在頁面加載時強制 canvas 生成,如果你還沒有這樣做的話。

無論如何,您正在嘗試做錯事。 Php 不評估 html 代碼,它只是一個預處理器,而不是像瀏覽器那樣的解釋器。 您可以一直等待,但您永遠無法獲得只有瀏覽器才能生成的圖像內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM