php はユーザーがダウンロードを開始したかどうかを検出できますか?
ユーザーがダウンロードを完了したかどうかを検出する必要があるため、次のコードがあります
<br />
...<br />
ignore_user_abort(true);<br />
if ($fd = fopen($filePath, 'rb')) {<br />
session_write_close();<br />
if ($start_offset > 0)<br />
fseek($fd, $start_offset);<br />
while (!feof($fd)) {<br />
print (fread($fd, 16384));<br />
}<br />
<br />
fclose($fd);<br />
}<br />
if (connection_aborted()){<br />
...<br />
}<br />
else {<br />
...<br />
}<br />
...
ログイン後にコピー
ここで問題が発生します。ファイルが小さい場合は、[ストレージ ディレクトリの選択] ダイアログ ボックスが表示され、サーバーがすべてのファイルを送信した後、[キャンセル] をクリックします。ファイルなので、 if (connection_aborted()) が false
の場合
例えば、最初の印刷後、ユーザーがダウンロードを開始していないことが判明した場合、印刷を一時停止するか、バッファリングなどを禁止する方法はあるのかをお聞きしたいです。ユーザーが受け入れない場合、つまり印刷物が返せない場合、印刷物はブロックされるということですか?
説明がわかりやすいかわかりません。
-----解決策--------------------------------PHP にはそれを知る方法がありません。
------解決策---------PHP サーバー スクリプト、つまりブラウザーの動作は次のとおりです。以上、PHP は無力でした。
------解決策----------------------Put if (connection_aborted()){.. .ループに 1 つ入れます
------解決策---------サーバーはヘッダーを送信します。次はファイルデータです
ブラウザはヘッダーを受信すると、すぐに後続のデータを受信します。ブラウザがヘッダーを解析しているときにダウンロードはすでに開始されていますが、キャッシュにダウンロードされるだけです。
------解決策---------
基礎となるプロトコルの問題は言語とは関係ありません。双方が合意すれば、PHP も使用できます
。