Zapis do pliku .txt

0

Witam,
Pierwszy raz mam do czynienia z JS.

Mam taki kod:

<div id="trades"></div>
		<script>
        var binanceSocket = new WebSocket("wss://stream.binance.com:9443/ws/btcusdt@trade");

        var tradeDiv = document.getElementById('trades')

         binanceSocket.onmessage = function (event) {
             console.log(event.data);

             var messageObject = JSON.parse(event.data)   

             tradeDiv.append(messageObject.p)
                 
         }
        </script>

Chciałem do zmiennej w php zapisywać na bieżąco to co jest dopisywane do div id="trades" ale wiedząc jaki to jest język raczej nie jest to możliwe. A skoro nie jest to możliwe to wystarczy tylko aby JS zapisywał mi to do pliku .txt a z resztą już sobie poradzę, tylko czy JS ma taką możliwość zapisu do pliku? Jeśli nie to jak przekazywać aktualną wartość na bieżąco do php ?

3

Dwie sprawy:

  1. tak żeby uniknąć zamieszania czy niedopowiedzeń: PHP działa po stronie serwera, JavaScript się wykonuje po stronie klienta/w przeglądarce. Dlatego niemożliwe jest "zapisanie przez javaScript czegoś do zmiennej w PHP". Jedynie możesz przekazać jakieś dane z przeglądarki do serwera, a potem zająć się ich obróbką. Nie jest to jakieś mega trudne zadanie, ale raczej nie jest to też temat dla zupełnego początkującego. Poza tym zapis wykonany przez PHP by miał miejsce po stronie serwera, a nie na dysku użytkownika. I ostatnia rzecz - jak już działamy na serwerze i mamy PHP, to zamiast się bawić w pliki tekstowe, może lepiej by było skorzystać z jakiegoś zapisu w SQL

  2. odnośnie zapisu przez JavaScript - rzuć okiem na
    https://stackoverflow.com/questions/13405129/javascript-create-and-save-file.
    https://code-boxx.com/create-save-files-javascript/

2

Ale ty ten TXT chcesz zapisywać na swoim komputerze czy na serwerze?

2

uruchamiam na serwerze i tam chce plik zapisywac

W takim razie jest pytanie - skąd się bierze treść <DIV>, którą chcesz zapisać. Jeśli tą treść przekazuje Twój skrypt, to znaczy że serwer ma wiedzę o tym, co chcesz zapisać. Wtedy po prostu działasz w samym PHP.
Jeśli natomiast ta treść jest tworzona po stronie klienta (np. jakiś skrypt w JS ładuje do strony treści pobrane z innego źródła) to musisz skorzystać zarówno z javaScript, jak i PHP (lub czegoś innego, działającego po stronie serwera). Zainteresuj się hasłem AJAX - https://pl.wikipedia.org/wiki/AJAX. Po stronie frontu (przeglądarka) musisz mieć jakąś funkcję w JS, która połączy się z serwerem i prześle dane, które chcesz zapisać, natomiast na serwerze musisz stworzyć analogiczny mechanizm w PHP, który te dane złapie i zapisze.

0

Czy po załadowaniu do przeglądarki ta strona zawiera interesujące Cię dane pomiędzy

<div id="trades"></div>

w formie tekstu?
Może wystarczy pobrać stronę i ją zparsować (chyba tak to się nazywa), aby dobrać się do danych?

0
Radosław Głębicki napisał(a):

Czy po załadowaniu do przeglądarki ta strona zawiera interesujące Cię dane pomiędzy

<div id="trades"></div>

w formie tekstu?
Może wystarczy pobrać stronę i ją zparsować (chyba tak to się nazywa), aby dobrać się do danych?

Po załadowaniu do przeglądarki ta strona wyświetla wartość która jest dodawana do diva która została pobrana przez websocket. Te dane są dynamiczne(real-time), wartość potrafi się zmienić nawet kilkadziesiąt razy na sekundę. Otwórz sobie konsole po uruchomieniu i zobaczysz cały JSON. Mnie interesuje zapis messageObject.p do pliku .txt jeśli nie da się tego jakoś do php inaczej przesłać to będę w php czytał plik .txt i te dane będę miał. O div zapomnij to tylko było po to żeby zobaczyć czy uda mi się wyciągnąć z JSON to co mnie interesuje.

1

Pozostaje ci AJAX, jak już z resztą w wątku sugerowano.

0
<script>
			var binanceSocket = new WebSocket("wss://stream.binance.com:9443/ws/btcusdt@trade");

			binanceSocket.onmessage = function (event) {
            console.log(event.data);

            var messageObject = JSON.parse(event.data)   
            
			var fs = require('fs');
			
			fs.writeFile('plik.txt', messageObject.p, function (err) {
			  if (err) throw err;
			  console.log('Saved!');
			});
			
        </script>

Co poprawić?

0
Freja Draco napisał(a):

Pozostaje ci AJAX, jak już z resztą w wątku sugerowano.

Chyba że prześlę ajaxem do php metodą POST

<?php
for(;;)
{
<script>
        var binanceSocket = new WebSocket("wss://stream.binance.com:9443/ws/btcusdt@trade");

      
         binanceSocket.onmessage = function (event) {
             console.log(event.data);

            var messageObject = JSON.parse(event.data)   

        }
        </script>


//obróbka po przeslaniu tutaj z ajax metoda post 

}
?>

Czy to może tak działać? jeśli ajaxem będę przysłał do php dane metodą POST, to wszystko będzie zapętlone. Te dane chce miec w php, tylko pytanie czy lepiej ajaxem zapisywać do pliku .txt i php będzie czytać z pliku? Czy przesyłać metodą POST do php? czy może jakoś da się jakoś z konsoli do .txt zapisywać? czy może jeszcze jakoś inaczej to rozwiązać?

0

Zlecę napisanie tego.

1 użytkowników online, w tym zalogowanych: 0, gości: 1