PHP - Text aus datei loeschen

Ich habe noch einige Probleme mit meinem PHP Script.
Das Script soll eigentlich folgendes machen:

1. Nachschauen ob der Eintrag schon drine ist, wenn nicht neu rein schreiben
2. wenn schon drine dann ersetzen mit neuen

Das Problem das im Moment vorkommt ist, wenn ich die Textdatei im Browser aufrufe stehen manchmal zu wenig Daten drine und ich glaube das liegt vielleicht dadran das im Moment wo ich die Datei im Browser aufrufe, das PHP Script vielleicht die Daten am auswechseln ist und ich frage mich jetzt wie ich das hinbekommen kann, das sowas nicht mehr vorkommt.

Also manchmal rufe ich die Seite im Brower auf und alle Daten stehen drine und manchmal sind es zu wenig, also Lueckenhaft, aber im PHP Script loesche ich ja keine Daten also woran kann es dann liegen das ich manchmal zu wenig angezeigt bekomme.

Das ist mein Script:
PHP:
$file="Open.txt";
if(file_exists($file)==false)
  {
    $ourFileHandle = fopen($file, 'w') or die("can't open file Open.txt");
    fclose($ourFileHandle);
  }
if(isset($_GET['Open']) && isset($_GET['Od']))
  {
    $file="Open.txt";
    $nummer=$_GET['Od'];

    if(file_exists($file))
       {
         $content = file_get_contents($file);
         if(strpos($content, "<Ticket".$nummer.">")===false)
         {

          // hier neu rein schreiben

           $content.="<Ticket".$nummer.">Text</Ticket".$nummer.">";
           file_put_contents($file, $content, LOCK_EX);
         }
       if(strpos($content, "<Ticket".$nummer.">")>=0 && strlen($content)>2)
         {
           // hier updaten der daten
              
           $search = '#(<Ticket'.$nummer.'.*?>).*?(</Ticket'.$nummer.'>)#';
           $replace = "<Ticket".$nummer.">neu</Ticket".$nummer.">";
           $newcontent = preg_replace($search,$replace,$content);  
           file_put_contents($file, $newcontent, LOCK_EX);
         }
      
       }

  }
 
Das Problem das im Moment vorkommt ist, wenn ich die Textdatei im Browser aufrufe stehen manchmal zu wenig Daten drine und ich glaube das liegt vielleicht dadran das im Moment wo ich die Datei im Browser aufrufe, das PHP Script vielleicht die Daten am auswechseln ist
Genau sowas mein ich die ganze Zeit:
Mit Dateien hat man dieses Problem beim gleichzeitigen Zugriff eben.
und ich frage mich jetzt wie ich das hinbekommen kann, das sowas nicht mehr vorkommt.
Das wäre wieder der Fall "erkennen, dass es am Schreiben ist und solange mit dem Lesen warten".
Siehe meine andere Antwort dazu.

Vergiss dateibasierte Sachen für konkurrierende Zugriffe einfach.

Wie kompliziert ist es eigentlich so eine kontinuierliche Server Client Verbindung zu programmieren, koennte ich das in ein Tag mithilfe von einem Tutorial schon hinbekommen oder muss man da erst lauter Hintergrundinfos studieren?
Mann "kann" es schon innerhalb eines Tags schaffen, aber wenn,
dann hat man zumindest noch nicht viel Ahnung vom großen Ganzen.
Merkst du ja hoffentlich selbst, mit deiner Recherche nach Websockets,
von denen du dachtest, es sei das Selbe wie Sockets.
Hat schon miteinander zu tun, aber das sind trotzdem verschiedene Welten.
 
danke fuer deine unterstuetzung seit wochen schon.

das hoert sich so an das man da nicht so einfach was dran aendern kann und keine textdatei benutzen sollte.

ich glaube ich werde mein programm einfach aufgeben weil mit sockets bekomme ich das sowieso nicht hin und mit textdateien geht es auch nicht gut.
 
Auch hier noch einmal:
Wenn wir dein Problem nicht abschätzen können
gibts auch keine guten Lösungsvorschläge.

Das Erste und Wichtigste dürfte hier dein vollständiger Code sein
Den Rest der Liste kennst du ja.
 
Also oben habe ich ja den vollstaendigen Code schon hin geschrieben, die PHP Datei wird dann halt alle paar Sekunden einmal aufgerufen.

Aber du sagst ja man kann nicht so einfach ueberpruefen ob gerade in die Datei schon geschrieben wird. Oder es bringt nichts, aendert nicht das problem. Und mir faellt auch nichts ein, also kann man da nichts machen.
 
Beim Komplettcode meinte ich den von der Metatrader-DLL.
Ich vermute nur, dass es bei diesem Thread hier um das gleiche Projekt geht,
nur die Serverseite eben. (sicher sagen kann ich es nicht,
weil nach wie vor alles sehr geheim gehalten wird :rolleyes: )

Wie auch immer, eine Datei als Zwischenspeicher für konkurrierende Sachen ist ein Problem,
und zwar eins dass man meistens vermeiden kann.
Egal ob am Client oder am Server.
 
Also eine M-DLL Datei gibt es nicht, Im Finanzprogramm wird mit einer ganz anderen Programmiersprache geschrieben ohne DLL Dateien, deswegen habe ich davon auch nichts hier hoch geladen. Aber mann kann fertige functionen aus DLL Dateien importieren.

Ich habe beispielweise Windows wininet functionen in das Finanzprogramm importiert.

Und wie dann die HTTP GET Function mithilfe der importierten wininet functionen aufgebaut ist kann man in den Codebeispielen sehen. Ich habe gedacht mehr Infos brauch man auch nicht, weil ich habe auch eigentlich nicht mehr, der Code der HTTP GET function ist gegeben und wie die wininet functionen aufgebaut sind habe ich gedacht ist den C++ Programmierern vielleicht allgemein bekannt, aber da habe ich auch kein Code von, wie gesagt nur die Funktionen importiert.
 
Also eine M-DLL Datei gibt es nicht
Doch.
Im Finanzprogramm wird mit einer ganz anderen Programmiersprache geschrieben ohne DLL Dateien
Mir egal.
Oder besser: Wenn man nach 30sec Google erfährt,
dass die "andere" Programmiersprache auch gcc-tauglich ist...
...dann dürfte es sich ziemlich sicher um C handeln, behaupt ich einfach mal.
Aber mann kann fertige functionen aus DLL Dateien importieren.
Na also :rolleyes:
Aus "DLL-Dateien".

Und wie dann die HTTP GET Function mithilfe der importierten wininet functionen aufgebaut ist kann man in den Codebeispielen sehen. Ich habe gedacht mehr Infos brauch man auch nicht, weil ich habe auch eigentlich nicht mehr, der Code der HTTP GET function ist gegeben und wie die wininet functionen aufgebaut sind habe ich gedacht ist den C++ Programmierern vielleicht allgemein bekannt, aber da habe ich auch kein Code von, wie gesagt nur die Funktionen importiert.
Versteh ich das gerade richtig, dass du die Entwicklungsumgebung von MQL4
für alles von den rohen Wininetfunktionen weg nutzt?
Wie wärs, wenn du alles, was nicht direkt auf die Libs von MQL4 zugreift,
in "unabhängigem" C entwickelst (inkl. Threads etc.etc.) und dass dann nur noch aufrufst?

...
 
alles steht auf dieser Seite: http://codebase.mql4.com/7353
mehr code als dort im tutorial steht habe ich auch nicht.
und ich denke der typ hat die HTTP GET Funktion auch richtig zusammen gebaut.
was mir aber bis jetzt noch nicht gelungen ist, eine Datei mit der dort beschriebenen HTTP POST Funktion auf mein Webserver zu versenden. Falls du Lust hast kannst du mir auch dabei helfen.-, aber ich habe auch ein ftp function falls es nicht mit HTTP POST geht.
 
Hallo,

ich habe ein FTP Script mit Wininet Funktionen und kann damit eine Datei erfolgreich auf mein Webserver senden, aber im Moment landet die Datei immer nur im Hauptverzeichnis auf dem Webserver, kann ich den die Datei auch in ein bestimmten Ordner auf den Webserver damit laden?

Hier ist mein Code:

PHP:
  int hIntObj, hIntObjConn;
   string Password, ServerName, UserName, LocalFile, HostFile;
   bool Success;
  
   //Uploading the file
   hIntObj=InternetOpenA("MyInternetObjectName",1,NULL,NULL,NULL);//We create an object of type "Internet"
   if (hIntObj>0)
      {
         ServerName="domain.service.net";//Your ftp server
         UserName="neue";//Your username you use when manually establish a ftp session
         Password="468286";//Your password you use when manually establish a ftp session
         hIntObjConn=InternetConnectA(hIntObj, ServerName, 0, UserName, Password, INTERNET_SERVICE_FTP, NULL, NULL);//We hang a FTP session on our internet object created. The session could have been a HTTP session or even a HTTPS session. See http://msdn.microsoft.com/en-us/library/aa385473(VS.85).aspx
         if (hIntObjConn>0)
            {
               LocalFile="\files\filename.txt";//The physical address in your local machine where the file to be uploaded is.
               HostFile="filename.txt";//The name of the remote file uploaded
               Success=FtpPutFileA(hIntObjConn, LocalFile, HostFile, FTP_TRANSFER_TYPE_BINARY, NULL);
            }
      }
   InternetCloseHandle(hIntObj);
 
Zurück