回答編集履歴
5
調整
answer
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
header("Content-Type: text/event-stream");
|
9
9
|
date_default_timezone_set("Asia/Tokyo");
|
10
10
|
|
11
|
-
$logFile = '
|
11
|
+
$logFile = 'post.log'; // apacheのCustomLogを指定
|
12
12
|
$command= 'tail -f -1 ' .$logFile;
|
13
13
|
|
14
14
|
// winならpowershell
|
4
chousei
answer
CHANGED
@@ -37,4 +37,13 @@
|
|
37
37
|
console.log(event.data );
|
38
38
|
};
|
39
39
|
</script>
|
40
|
-
```
|
40
|
+
```
|
41
|
+
|
42
|
+
# httpd.confの設定
|
43
|
+
|
44
|
+
「IfModule log_config_module」に以下追記してください
|
45
|
+
```
|
46
|
+
SetEnvIf Request_Method POST post_request
|
47
|
+
CustomLog "logs/post.log" combined env=post_request
|
48
|
+
```
|
49
|
+
上記post.logをsse.phpで指定してやればpostされるたびにSSEでデータが飛んできます
|
3
調整
answer
CHANGED
@@ -9,10 +9,10 @@
|
|
9
9
|
date_default_timezone_set("Asia/Tokyo");
|
10
10
|
|
11
11
|
$logFile = '・・・;
|
12
|
-
$command= 'tail -f ' .$logFile;
|
12
|
+
$command= 'tail -f -1 ' .$logFile;
|
13
13
|
|
14
14
|
// winならpowershell
|
15
|
-
//$command= 'powershell -Command "Get-Content ' .$logFile .' -wait"';
|
15
|
+
//$command= 'powershell -Command "Get-Content ' .$logFile .' -wait -Tail 1"';
|
16
16
|
|
17
17
|
$handle = popen($command, 'r');
|
18
18
|
if ($handle) {
|
2
ついき
answer
CHANGED
@@ -1,2 +1,40 @@
|
|
1
1
|
httpd側でpostを受ける用のカスタムログファイルを作っておき
|
2
2
|
「tail -f」で監視続ければよいのでは?
|
3
|
+
|
4
|
+
sse.php
|
5
|
+
```php
|
6
|
+
<?PHP
|
7
|
+
header("Cache-Control: no-store");
|
8
|
+
header("Content-Type: text/event-stream");
|
9
|
+
date_default_timezone_set("Asia/Tokyo");
|
10
|
+
|
11
|
+
$logFile = '・・・;
|
12
|
+
$command= 'tail -f ' .$logFile;
|
13
|
+
|
14
|
+
// winならpowershell
|
15
|
+
//$command= 'powershell -Command "Get-Content ' .$logFile .' -wait"';
|
16
|
+
|
17
|
+
$handle = popen($command, 'r');
|
18
|
+
if ($handle) {
|
19
|
+
while (!feof($handle)) {
|
20
|
+
$buffer = fgets($handle);
|
21
|
+
if ($buffer === false) break;
|
22
|
+
$t=date("Y-m-d H:i:s");
|
23
|
+
print "data:".json_encode(["message"=>htmlspecialchars($buffer, ENT_QUOTES, 'UTF-8'),"time"=>$t]).PHP_EOL.PHP_EOL;
|
24
|
+
if ( connection_aborted() ) break;
|
25
|
+
ob_flush();
|
26
|
+
flush();
|
27
|
+
}
|
28
|
+
pclose($handle);
|
29
|
+
}
|
30
|
+
```
|
31
|
+
|
32
|
+
ブラウザ側の処理
|
33
|
+
```javascript
|
34
|
+
<script>
|
35
|
+
const evtSource = new EventSource("sse.php");
|
36
|
+
evtSource.onmessage = function (event) {
|
37
|
+
console.log(event.data );
|
38
|
+
};
|
39
|
+
</script>
|
40
|
+
```
|
1
typo
answer
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
httpd側でpostを受け
|
1
|
+
httpd側でpostを受ける用のカスタムログファイルを作っておき
|
2
|
-
「tail -f」で
|
2
|
+
「tail -f」で監視続ければよいのでは?
|