freestuff.gr αρχική σελίδα
 FAQFAQ    ΑναζήτησηΑναζήτηση   Λίστα ΜελώνΛίστα Μελών   Ομάδες ΜελώνΟμάδες Μελών   <b>Εγγραφή Μέλους</b>Εγγραφή Μέλους 
 ΠροφίλΠροφίλ   Επιλογές μέλους Επιλογές   Τα bookmarks μου Τα bookmarks μου   Προσωπικά μηνύματαΠροσωπικά μηνύματα 
  διαφήμιση  

Καλώς ήρθατε στο forum μας! Για να συμμετάσχετε στις συζητήσεις θα πρέπει να είσαστε μέλος. Γίνετε μέλος τώρα!.
 

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


 Forum index » Δημιουργία Web Sites, Γραφικών & Προγραμματισμός » PHP Προγραμματισμός και εφαρμογές » PHP Προγραμματισμός
Moderators:  PHP Moderators, Super-Moderators, WebDev Moderators
Εισαγωγή νέου Θέματος   Απάντηση στο Θέμα Σελίδα 1 από 3 [41 Μηνύματα]      Bookmarks Tags: βιβλιοπωλείοηλεκτρονικόftpβάση Mark the topic unread :: Προηγούμενο θέμα :: Επόμενο θέμα
Σελίδα:  1, 2, 3 Επόμενο
ΑποστολέαςΜήνυμα
mgiota


Μέλος από: 15 Σεπ 2009
Μηνύματα: 190
Περιοχή: Θεσσαλονίκη
View users profile Visit posters website
ΜήνυμαΣτις: 21 Οκτ 2011 00:14    Θέμα: ηλεκτρονικό βιβλιοπωλείο διασύνδεση με άλλη βάση με χρήση ftp
Περιγραφή θέματος: ηλεκτρονικό βιβλιοπωλείο διασύνδεση με άλλη βάση με χρήση ftp
Απάντηση με παράθεση  Mark this post and the followings unread

Καλησπέρα,

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

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

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

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

_________________
http://giota-mywebworld.blogspot.com/
billt


Μέλος από: 20 Φεβ 2004
Βοηθήματα: 1
Scripts: 1
Μηνύματα: 256+

Περιοχή: Θεσσαλονίκη
View users profile
ΜήνυμαΣτις: 21 Οκτ 2011 08:10    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

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

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

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

_________________
E-Commerce Services , Official Google Partner , My Interview
Affiliate Management: Urbangreen (SaS), Ladopano (LW) , e-mpomponiera (LW), Cozyshop(LW), Kosmima24 (LW)
mgiota


Μέλος από: 15 Σεπ 2009
Μηνύματα: 190
Περιοχή: Θεσσαλονίκη
View users profile Visit posters website
ΜήνυμαΣτις: 21 Οκτ 2011 11:24    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

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

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

_________________
http://giota-mywebworld.blogspot.com/
billt


Μέλος από: 20 Φεβ 2004
Βοηθήματα: 1
Scripts: 1
Μηνύματα: 256+

Περιοχή: Θεσσαλονίκη
View users profile
ΜήνυμαΣτις: 21 Οκτ 2011 11:28    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

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

_________________
E-Commerce Services , Official Google Partner , My Interview
Affiliate Management: Urbangreen (SaS), Ladopano (LW) , e-mpomponiera (LW), Cozyshop(LW), Kosmima24 (LW)
mgiota


Μέλος από: 15 Σεπ 2009
Μηνύματα: 190
Περιοχή: Θεσσαλονίκη
View users profile Visit posters website
ΜήνυμαΣτις: 21 Οκτ 2011 11:51    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

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

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

_________________
http://giota-mywebworld.blogspot.com/
mgiota


Μέλος από: 15 Σεπ 2009
Μηνύματα: 190
Περιοχή: Θεσσαλονίκη
View users profile Visit posters website
ΜήνυμαΣτις: 21 Οκτ 2011 12:19    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

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

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

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

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

_________________
http://giota-mywebworld.blogspot.com/
Kypros Lambrou


Μέλος από: 17 Οκτ 2011
Μηνύματα: 96

View users profile
ΜήνυμαΣτις: 21 Οκτ 2011 12:43    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Καλησπέρα mgiota.

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

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

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

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

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


Μέλος από: 15 Σεπ 2009
Μηνύματα: 190
Περιοχή: Θεσσαλονίκη
View users profile Visit posters website
ΜήνυμαΣτις: 21 Οκτ 2011 13:32    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

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

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

_________________
http://giota-mywebworld.blogspot.com/
Kypros Lambrou


Μέλος από: 17 Οκτ 2011
Μηνύματα: 96

View users profile
ΜήνυμαΣτις: 21 Οκτ 2011 14:18    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

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


Μέλος από: 15 Σεπ 2009
Μηνύματα: 190
Περιοχή: Θεσσαλονίκη
View users profile Visit posters website
ΜήνυμαΣτις: 21 Οκτ 2011 14:27    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

ναι με 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);
?>

_________________
http://giota-mywebworld.blogspot.com/
Kypros Lambrou


Μέλος από: 17 Οκτ 2011
Μηνύματα: 96

View users profile
ΜήνυμαΣτις: 21 Οκτ 2011 14:41    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

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


Μέλος από: 15 Σεπ 2009
Μηνύματα: 190
Περιοχή: Θεσσαλονίκη
View users profile Visit posters website
ΜήνυμαΣτις: 21 Οκτ 2011 14:47    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

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

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

_________________
http://giota-mywebworld.blogspot.com/
Kypros Lambrou


Μέλος από: 17 Οκτ 2011
Μηνύματα: 96

View users profile
ΜήνυμαΣτις: 21 Οκτ 2011 15:13    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

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

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

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

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


Μέλος από: 15 Σεπ 2009
Μηνύματα: 190
Περιοχή: Θεσσαλονίκη
View users profile Visit posters website
ΜήνυμαΣτις: 21 Οκτ 2011 15:26    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

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

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

_________________
http://giota-mywebworld.blogspot.com/
Kypros Lambrou


Μέλος από: 17 Οκτ 2011
Μηνύματα: 96

View users profile
ΜήνυμαΣτις: 21 Οκτ 2011 15:52    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

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

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

echo "<br/>";
echo hash_file('crc32', 'file1.txt');        // Original File
echo "<br/>";
echo hash_file('crc32', 'file2.txt');        // Identical Copy
echo "<br/>";
echo hash_file('crc32', 'file3.txt');        // 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. Αν τα δύο είναι τα ίδια τότε κατα πάσα πιθανότητα θα έχει ολοκληρωθεί και η μεταφορά του αρχείου επιτυχώς.
Εμφάνιση Μηνυμάτων:   
Εισαγωγή νέου Θέματος   Απάντηση στο Θέμα Σελίδα 1 από 3 [41 Μηνύματα] Σελίδα:  1, 2, 3 Επόμενο
Mark the topic unread :: Προηγούμενο θέμα :: Επόμενο θέμα
 Forum index » Δημιουργία Web Sites, Γραφικών & Προγραμματισμός » PHP Προγραμματισμός και εφαρμογές » PHP Προγραμματισμός


Σχετικά θέματα
 Θέματα   Απ/σεις   Αποστολέας   Τελευταίο μήνυμα 
Δεν περνάνε οι εγγραφές στη βάση 8 Dalton 04 Ιουν 2014 21:17
gvre Εμφάνιση τελευταίου μηνύματος
require once 2 Serghio 17 Ιαν 2014 18:32
Serghio Εμφάνιση τελευταίου μηνύματος
Σύνδεση με την βάση και κλείσιμο μετά 5 dpa 29 Δεκ 2013 13:40
geomagas Εμφάνιση τελευταίου μηνύματος
php απορία. Υποβοβολή πολλαπλών δεδομένων στη βάση δεδομένων με php μέσω $_POST 4 cannibal152 03 Δεκ 2013 12:05
cannibal152 Εμφάνιση τελευταίου μηνύματος
Καταχώρηση στοιχείων σε φόρμα και αποστολή σε βάση δεδομένων 4 manolisfrou 08 Οκτ 2013 07:47
geomagas Εμφάνιση τελευταίου μηνύματος
 
Τώρα είναι 01 Αυγ 2014 15:50 | All times are UTC + 2


Email This Page to Someone! add to Favorites

     Powered by p h p B B © 2001,2005 p h p B B Group
Για άμεση επικοινωνία με τον διαχειριστή του freestuff.gr στο email: freestuff.gr(παπάκι)gmail.com


Copyright © 1999-2013 Freestuff.gr All Rights Reserved  
Version Aegean, designed by N. Tsaganos