fopen πρόβλημα temp files

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
Άβαταρ μέλους
Basilakis
PHP Moderator
Δημοσιεύσεις: 8574
Εγγραφή: 17 Νοέμ 2003 13:03
Τοποθεσία: Womans' Brain
Επικοινωνία:

fopen πρόβλημα temp files

Δημοσίευση από Basilakis » 31 Μαρ 2008 19:39

Έχω φτιάξει μία λούπα που διαβάζει αρχεία txt από remote servers για να τραβάει κάποιες πληροφορίες που βρίσκονται στην αρχή κάθε αρχείου.
Μέσα στην λούπα έχω τοποθετήσει τον εξής κώδικα ο οποίος προσδοκά να αποθηκεύει τα πρώτα 4096 bytes κάθε txt αρχείου που διαβάζετε($file_to_read), σε ένα temporary file file_to_write.txt .

Κώδικας: Επιλογή όλων

$handle = @fopen("$file_to_read", "r");
clearstatcache();
ignore_user_abort(true);  
if ($handle) {
    while (!feof($handle)) {
        $buffer = fgets($handle, 4096);

	$filename = 'file_to_write.txt';

	if (is_writable($filename)) {

		if (!($handle2 = fopen("$filename", "a"))) {
   	      echo "Cannot open file ($filename)";
   	      exit;
   	 }

    	if (fwrite($handle2, $buffer) === FALSE) {
    	    echo "Cannot write to file ($filename)";
    	    exit;
   	 }	
    	fclose($handle2);
	}
    }
    fclose($handle);
}
Μετά από αυτό το κομμάτι κώδικα με ένα ιδιαίτερο script διαβάζω και παίρνω τις πληροφορίες που θέλω.

Το 1ο πρόβλημα είναι ότι κάθε φορά που γράφω στο temporary file, αντιγράφετε ολόκληρο το $file_to_read και όχι τα πρώτα 4096 bytes.

Το άλλο πρόβλημα είναι ότι την δεύτερη φορά που θα αντιγραφεί αρχείο στο περιεχόμενο του temporary file υπάρχει ήδη το 1ο αρχείο και αντί να γίνετε αντικατάσταση καταλήγω να έχω ένα temporary file 180 MB που περιέχει με την αντίστροφη σειρά τα αρχεία που διάβασα.

Έψαξα κάποιον τρόπο για να καθαρίζω το temporary file κάθε φορά που τελειώνει η λούπα μου αλλά δεν βρήκα τίποτα.

Παρατήρηση, τις πληροφορίες που παίρνω με το script από τα αρχεία δεν γίνετε να τα παίρνω remote και η λούπα μαζί με το script που αναφέρω είναι πολλών σειρών κώδικας.

Άβαταρ μέλους
dik_
Δημοσιεύσεις: 476
Εγγραφή: 07 Ιουν 2007 11:28

fopen πρόβλημα temp files

Δημοσίευση από dik_ » 01 Απρ 2008 00:04

1.
while (!feof($handle))

Διαβάζεις όλο το αρχείο, κι όχι τα πρώτα 4096b, απλά σε κομμάτια των 4096b, γι' αυτό το γράφει όλο.

2.
Θέλεις άλλο modifier για την fopen. Μάλλον w ή w+.

:)

Άβαταρ μέλους
Basilakis
PHP Moderator
Δημοσιεύσεις: 8574
Εγγραφή: 17 Νοέμ 2003 13:03
Τοποθεσία: Womans' Brain
Επικοινωνία:

fopen πρόβλημα temp files

Δημοσίευση από Basilakis » 02 Απρ 2008 21:00

Hmmm ok afta doulepsane.

πως θα μπορεί να σώζοντε μόνο τα πρώτα 32kb του αρχείου?

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες