Η σελίδα μας αναβαθμίστηκε, γι' αυτό τον λόγο τα μέλη μας θα πρέπει να ζητήσουν νέο κωδικό πρόσβασης από την υπηρεσία "Αποστολή κωδικού πρόσβασης".
Εάν το email με τον νέο κωδικό δεν έρθει στο inbox κοιτάξτε και στο spam folder. Ο server είναι φρέσκος και δεν έχει το reputation που του αξίζει.

ηλεκτρονικό βιβλιοπωλείο διασύνδεση με άλλη βάση με χρήση ftp

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

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

Απάντηση
mgiota
Δημοσιεύσεις: 190
Εγγραφή: 15 Σεπ 2009 13:11
Τοποθεσία: Θεσσαλονίκη
Επικοινωνία:

ηλεκτρονικό βιβλιοπωλείο διασύνδεση με άλλη βάση με χρήση ftp

Δημοσίευση από mgiota » 21 Οκτ 2011 01:14

Καλησπέρα,

θέλω να φτιάξω ένα eshop για ένα βιβλιοπωλείο, το οποίο όμως θα τραβάει βιβλία από μία εξωτερική βάση δεδομένων, με χρήση όμως ftp απ'οτι είδα από τα pdfs που μου έστειλε ο πελάτης.

Δεν ξέρω καθόλου πως μπορεί να γίνει κάτι τέτοιο και πως να ξεκινήσω. Αρχικά φανταζόμουν ότι μπορεί να γίνει με χρήση Web services και SOAP, αλλά ο πελάτης που ήδη το έχει κάνει αυτό στο site του μου είπε ότι το κάνει μέσω ftp. Απλά τώρα θα γίνει εκ του μηδενός.

Αυτό που φαντάζομαι ότι μπορεί να συμβαίνει είναι το εξής:

να χρονοπρογραμματίσω (με chrone jobs) το server να τρέχει ένα συγκεκριμένο αρχείο, το οποίο θα συνδέεται σε συγκεκριμένο ftp με functions της php, θα δημιουργεί ένα txt αρχείο με όλα τα data και μετά θα τα αποθηκεύει στη βάση. Όντως κάπως έτσι πρέπει να γίνει; Δεν μου χει ξανατύχει. Μιλάμε για βάση των 3.000.000 βιβλίων, οπότε φαντάζομαι ότι θα έχω θέματα με την ανανέωση της βάσης. Τι πρέπει να προσέξω;

Άβαταρ μέλους
billt
Δημοσιεύσεις: 1175
Εγγραφή: 20 Φεβ 2004 16:17
Τοποθεσία: Θεσσαλονίκη

ηλεκτρονικό βιβλιοπωλείο διασύνδεση με άλλη βάση με χρήση ftp

Δημοσίευση από billt » 21 Οκτ 2011 09:10

Φανταζομαι ότι ο πελάτης σου αναφέρεται στην χρήση κάποιου csv που παράγεται και μετα αντλείται με WGET.

Μπορείς να δημιοργήσεις ένα XML από την πηγή και να το τραβάς από το e-shop. Η σωστή όμως λύση είναι με webservices.

Σε κάθε περίπτωση έχει σημασία να ξέρουμε ποιες είναι οι δυνατότητες του συστήματος στον πελάτη, τι outputs δίνει και πως.

mgiota
Δημοσιεύσεις: 190
Εγγραφή: 15 Σεπ 2009 13:11
Τοποθεσία: Θεσσαλονίκη
Επικοινωνία:

ηλεκτρονικό βιβλιοπωλείο διασύνδεση με άλλη βάση με χρήση ftp

Δημοσίευση από mgiota » 21 Οκτ 2011 12:24

Εκεί που λες ότι μπορώ να δημιουργήσω ένα XML από την πηγή και να το τραβάω από το eshop τι ακριβώς εννοείς; Εγώ φαντάζομαι να τραβάω τα δεδομένα από την πηγή και να τα σώζω στη βάση, απλά με 3000000 βιβλία δεν ξέρω αν θα προλαβαίνει να τρέξει το σκριπτάκι.

Και γω πιστεύω ότι η σωστή λύση είναι μέσω webservices, απλά το συγκεκριμένο βιβλιοπωλείο δουλεύει με ftp, άρα νομίζω δεν μπορώ να κάνω αλλιώς. Πιστεύεις ότι με τέτοιο όγκο δεδομένων, δεν υπάρχει περίπτωση να δουλέψει όλο αυτό;

Άβαταρ μέλους
billt
Δημοσιεύσεις: 1175
Εγγραφή: 20 Φεβ 2004 16:17
Τοποθεσία: Θεσσαλονίκη

ηλεκτρονικό βιβλιοπωλείο διασύνδεση με άλλη βάση με χρήση ftp

Δημοσίευση από billt » 21 Οκτ 2011 12:28

Σε τι κανει export τα δεδομενα η πηγή; Τι σύστημα είναι;

mgiota
Δημοσιεύσεις: 190
Εγγραφή: 15 Σεπ 2009 13:11
Τοποθεσία: Θεσσαλονίκη
Επικοινωνία:

ηλεκτρονικό βιβλιοπωλείο διασύνδεση με άλλη βάση με χρήση ftp

Δημοσίευση από mgiota » 21 Οκτ 2011 12:51

Το document αναφέρει ότι η πληροφορία μεταφέρεται χρησιμοποιώντας text files using the CSV format.

Σε καλύπτει αυτό;

mgiota
Δημοσιεύσεις: 190
Εγγραφή: 15 Σεπ 2009 13:11
Τοποθεσία: Θεσσαλονίκη
Επικοινωνία:

ηλεκτρονικό βιβλιοπωλείο διασύνδεση με άλλη βάση με χρήση ftp

Δημοσίευση από mgiota » 21 Οκτ 2011 13:19

Μία λύση που μου πρότεινε ένας γνωστός είναι η εξής:

Αφού σιγουρέψω ότι πήρα τα δεδομένα, κάνω ένα backup τη βάση μου, αν πετυχει το backup θα πρέπει να κάνω insert τα δεδομένα στη βάση. Αλλα πρώτα θα πρέπει να τρεξω δοκιμαστικά insert να σιγουρέψω ότι το insert θα γίνει κανονικά. Αν αποτύχει το δοκιμαστικό το insert δεν κάνω τίποτα άλλο.

Αν πετύχει τότε κάνω delete τα πάντα απο τη βάση και μετά κάνω το πραγματικό insert.

Μπορεί κάποιος να μου πει πως τρέχω δοκιμαστικά insert, δηλαδή να τρέξω πολλά queries χωρίς όμως να αλλάξω τα δεδομένα, μόνο και μόνο για να δω αν θα χτυπήσουν τα queries.

Kypros Lambrou
Δημοσιεύσεις: 96
Εγγραφή: 17 Οκτ 2011 13:29

ηλεκτρονικό βιβλιοπωλείο διασύνδεση με άλλη βάση με χρήση ftp

Δημοσίευση από Kypros Lambrou » 21 Οκτ 2011 13:43

Καλησπέρα mgiota.

Καταρχάς λόγω του ότι μιλάς για ένα αρκετά μεγάλο όγκο δεδομένων θα ήταν μεγάλο λάθος κάθε φορά να σβήνεις τα πάντα απο την βάση και μετά να τα ξαναβάζεις απο την αρχή.

Ανάλογα με τις πληροφορίες που παίρνεις απο το csv αρχείο θα πρέπει κάπως να αξιολογήσεις ποια δεδομένα είναι καινούργια, ποια έχουν διαγραφεί και ποια ίσως να έχουν τροποποιηθεί με κάποιο τρόπο.

Αν παίρνεις κάποια ημερομηνία με τις τελευταίες αλλαγές όπως πχ. ένα last_modified_date από την βάση δεδομένων, τότε εσύ μπορεί να έχεις αποθηκευμένο το πότε έχεις κάνει την τελευταία εισαγωγή δεδομένων και να διορθώνεις μόνο αυτά τα δεδομένα τα οποία έχουν τροποποιηθεί στον ενδιάμεσο χρόνο.

Γενικά θα πρέπει εσύ να γνωρίζεις πως δουλεύει και η αρχική βάση δεδομένων του βιβλιοπωλείου αφού για παράδειγμα ένα βιβλίο όταν αφαιρείται από το σύστημα μπορεί να μην αφαιρείται εντελώς από την βάση δεδομένων αλλά απλώς ένα delete flag να το κατατάσσει ως deleted.

Αν χρησιμοποιεί κάποιο κλειδί που αυξάνεται με αύξουσα τιμή τότε μπορείς εύκολα να συγκρίνεις και τα τελευταία δεδομένα - βιβλία που έχουν εισαχθεί στο σύστημα και να προσθέτεις μόνο αυτά στην δικιά σου βάση δεδομένων.

mgiota
Δημοσιεύσεις: 190
Εγγραφή: 15 Σεπ 2009 13:11
Τοποθεσία: Θεσσαλονίκη
Επικοινωνία:

ηλεκτρονικό βιβλιοπωλείο διασύνδεση με άλλη βάση με χρήση ftp

Δημοσίευση από mgiota » 21 Οκτ 2011 14:32

Σ'ευχαριστώ για την απάντησή σου.

Θα ελέγξω όλα τα ενδεχόμενα. Κάτι άλλο που με απασχολεί είναι πως μπορώ να ελέγξω αν ο download των δεδομένων με FTP ολοκληρώθηκε χωρίς σφάλματα (π.χ έπεσε η σύνδεση, ή έκλεισε το FTP connection για κάποιο λόγο). Υπάρχει τρόπος?

Kypros Lambrou
Δημοσιεύσεις: 96
Εγγραφή: 17 Οκτ 2011 13:29

ηλεκτρονικό βιβλιοπωλείο διασύνδεση με άλλη βάση με χρήση ftp

Δημοσίευση από Kypros Lambrou » 21 Οκτ 2011 15:18

Αυτό εξαρτάται απο την μέθοδο με την οποία θα συνδέεσαι στον ftp server που θέλεις. Με php γλώσσα σκοπεύεις να αναπτύξεις την εφαρμογή?

mgiota
Δημοσιεύσεις: 190
Εγγραφή: 15 Σεπ 2009 13:11
Τοποθεσία: Θεσσαλονίκη
Επικοινωνία:

ηλεκτρονικό βιβλιοπωλείο διασύνδεση με άλλη βάση με χρήση ftp

Δημοσίευση από mgiota » 21 Οκτ 2011 15:27

ναι με php. κάπως έτσι (το παράδειγμα ενδεικτικό)

<?php
$ftp_server=$_POST['server'];
$ftp_user_name=$_POST['username'];
$ftp_user_pass=$_POST['password'];
$source_file=$_FILES['file']['name'];// retrieve name of the file to be uploaded
$destination_file=$source_file;
// make a connection to the ftp server
$conn_id = ftp_connect($ftp_server);

// login with username and password
$login_result = ftp_login($conn_id , $ftp_user_name , $ftp_user_pass);

// check connection
if((!$conn_id)||(!$login_result)){
echo "FTP connection has failed!" ;
echo "Attempted to connect to $ftp_server for user $ftp_user_name" ;
exit;
}else{
echo "Connected to $ftp_server, for user $ftp_user_name" ;
}

// upload the file
$upload = ftp_put($conn_id,$destination_file,$source_file,FTP_ASCII );

// check upload status
if(!$upload){
echo "FTP upload has failed!" ;
}else{
echo "Uploaded $source_file to $ftp_server as $destination_file" ;
}

// close the FTP stream
ftp_close($conn_id);
?>

Kypros Lambrou
Δημοσιεύσεις: 96
Εγγραφή: 17 Οκτ 2011 13:29

ηλεκτρονικό βιβλιοπωλείο διασύνδεση με άλλη βάση με χρήση ftp

Δημοσίευση από Kypros Lambrou » 21 Οκτ 2011 15:41

Με αυτό τον κώδικα θα κάνεις upload στον ftp server ενώ εσύ αυτό που χρειάζεσαι είναι να κατεβάζεις το αρχείο από τον ftp server σε κάποιο δεύτερο server που θα φιλοξενεί το eshop του βιβλιοπωλείου και έπειτα να επεξεργάζεσαι το αρχείο αυτό για να εφαρμόσεις τις οποιεσδήποτε αλλαγές στην βάση δεδομένων του eshop.
Διόρθωσε με αν έχω μπερδευτεί ή δεν κατάλαβα καλά...

mgiota
Δημοσιεύσεις: 190
Εγγραφή: 15 Σεπ 2009 13:11
Τοποθεσία: Θεσσαλονίκη
Επικοινωνία:

ηλεκτρονικό βιβλιοπωλείο διασύνδεση με άλλη βάση με χρήση ftp

Δημοσίευση από mgiota » 21 Οκτ 2011 15:47

Καλά κατάλαβες, με αυτό τον κώδικα όντως κάνω upload στον ftp server. Δεν θα χρησιμοποιήσω αυτό, απλά έκανα στα γρήγορα copy-paste εντολές της php για ftp, δηλαδή ftp_connect, ftp_login, ftp_put, ftp_close. Το θέμα μου είναι πως εξασφαλίζω (με ποιες εντολές), ότι δεν θα κοπεί η σύδεση ή ότι το execution time είναι αρκετό για να κάνω τη δουλειά μου.

Θα χρησιμοποιήσω π.χ τη setTimeout (); Επίσης έψαξα και βρήκα κάτι και για curl, θα χρησιμοποιήσω κάτι τέτοιο;

Kypros Lambrou
Δημοσιεύσεις: 96
Εγγραφή: 17 Οκτ 2011 13:29

ηλεκτρονικό βιβλιοπωλείο διασύνδεση με άλλη βάση με χρήση ftp

Δημοσίευση από Kypros Lambrou » 21 Οκτ 2011 16:13

Σίγουρα το curl είναι μια καλή λύση όπως και πολλά άλλα libraries που βρίσκονται στο διαδίκτυο. Ανάλογα με το τι θα χρησιμοποιήσεις θα πρέπει να προσέξεις παραμέτρους όπως πχ το set_time_limit() και το max_execution_time για να μην σταματά η εκτέλεση του κώδικα πολύ γρήγορα.

setTimeout δεν υπάρχει στην php εξ όσων γνωρίζω :wink:

Απλά λόγω του ότι δεν έχεις καταλήξει στο τι ακριβώς θα χρησιμοποιήσεις έτσι δεν γνωρίζουμε και το τι προβλήματα μπορεί να βρείς. Γενικά όμως το FTP αν και υποστηρίζει δεν έχει γραφτεί για την μεταφορά τεράστιων αρχείων άρα και αυτό θα πρέπει να το ελέγξεις. Κάτι άλλο που μπορεί να σε ενδιαφέρει ίσως να είναι και η μεταφορά των αρχείων σε binary μορφή.

Πέραν αυτού μετά την μεταφορά και πριν να αρχίσεις να "παίζεις" με την βάση δεδομένων θα πρέπει να κάνεις κάποια integrity tests για να βεβαιωθείς ότι όλο το αρχείο έχει μεταφερθεί και δεν έχει γίνει corrupted ή έχουν παρουσιαστεί άλλα προβλήματα κατά την μεταφορά.

mgiota
Δημοσιεύσεις: 190
Εγγραφή: 15 Σεπ 2009 13:11
Τοποθεσία: Θεσσαλονίκη
Επικοινωνία:

ηλεκτρονικό βιβλιοπωλείο διασύνδεση με άλλη βάση με χρήση ftp

Δημοσίευση από mgiota » 21 Οκτ 2011 16:26

Σ'ευχαριστώ για τις απαντήσεις. Όντως ακόμα δεν ξέρω καν πως θα το δουλέψω, γι' αυτό και είμαι ακόμα στη φάση του ξεκαθαρίσματος.

Πως μπορώ να ελέγξω αυτό που λες;
Πέραν αυτού μετά την μεταφορά και πριν να αρχίσεις να "παίζεις" με την βάση δεδομένων θα πρέπει να κάνεις κάποια integrity tests για να βεβαιωθείς ότι όλο το αρχείο έχει μεταφερθεί και δεν έχει γίνει corrupted ή έχουν παρουσιαστεί άλλα προβλήματα κατά την μεταφορά.

Kypros Lambrou
Δημοσιεύσεις: 96
Εγγραφή: 17 Οκτ 2011 13:29

ηλεκτρονικό βιβλιοπωλείο διασύνδεση με άλλη βάση με χρήση ftp

Δημοσίευση από Kypros Lambrou » 21 Οκτ 2011 16:52

Και πάλι υπάρχουν αρκετοί τρόποι για να το πετύχεις ανάλογα με το πόσο ακριβής θέλεις να είσαι και παίζοντας θα δεις και τι είναι προτιμότερο για την περίπτωση σου.

Για παράδειγμα μπορείς με ένα απλό script να ελέγξεις το crc32 checksum για να δεις αν δύο αρχεία είναι πανομοιότυπα όπως πιο κάτω:

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

echo "<br/>";
echo hash_file&#40;'crc32', 'file1.txt'&#41;;        // Original File
echo "<br/>";
echo hash_file&#40;'crc32', 'file2.txt'&#41;;        // Identical Copy
echo "<br/>";
echo hash_file&#40;'crc32', 'file3.txt'&#41;;        // Changed copy
Εδώ είχα ένα αρχικό αρχείο file1.txt που απλά περιέχει μια παράγραφο ενός κειμένου. Το έκανα copy - paste δύο φορές και τα δύο αντίγραφα τα μετονόμασα σε file2.txt και file3.txt αντίστοιχα.
Το file2.txt το άφησα ακριβώς όπως ήταν μετά την αντιγραφή ενώ το file3.txt μπήκα και του πρόσθεσα μόλις ένα τυχαίο γράμμα στο τέλος, απλά το γράμμα Α.

Το αποτέλεσμα που παίρνω όταν τρέχω αυτές τις εντολές είναι:

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

60567a3b
60567a3b
c7286d05
με τα τρία crc32 checksum των τριών αρχείων αντίστοιχα. Εδώ βλέπω ότι το πρώτο και το δεύτερο αρχείο έχουν το ίδιο checksum, κάτι που σημαίνει ότι είναι πανομοιότυπα ενώ αλλάζωντας μόλις ένα χαρακτήρα στο τρίτο αρχείο, ολόκληρο το checksum έχει αλλάξει.

Για να έρθω στην περίπτωση σου ο τρόπος που μπορεί να χρησιμοποιηθεί είναι παίρνοντας αρχικά το checksum απο το αρχείο στον ftp server, και μετά να το συγκρίνω στην php με το αρχείο όταν θα έχει μεταφερθεί στον δικό σου server. Αν τα δύο είναι τα ίδια τότε κατα πάσα πιθανότητα θα έχει ολοκληρωθεί και η μεταφορά του αρχείου επιτυχώς.

Απάντηση

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

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

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