[英]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
代碼和HTML
和JavaScript
? 我創建了一個.html
文件,在本地處理 3 秒后,該文件會為給定視頻的縮略圖創建圖像數據。
我需要為視頻生成縮略圖。 我使用了共享主機,而我的主機提供商不支持ffmpeg
。 但是,您可以使用canvas
和JavaScript
生成縮略圖。 我已經給客戶施加了很大的壓力。 如果可能,上傳和下載時間將比使用客戶端短得多。
我試過使用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!
});
正如您已經想到的,您可以通過處理結果來處理任何錯誤。
iframe.load
) 的事件監聽器也會觸發。 所以要小心檢查結果的過程(那個 iframe 的內容!)我認為沒有其他方法可以在 php 服務器上生成縮略圖,而不是使用 ffmpeg。 我想,你唯一能做的就是在頁面加載時強制 canvas 生成,如果你還沒有這樣做的話。
無論如何,您正在嘗試做錯事。 Php 不評估 html 代碼,它只是一個預處理器,而不是像瀏覽器那樣的解釋器。 您可以一直等待,但您永遠無法獲得只有瀏覽器才能生成的圖像內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.