Jump to content



Database Check every 2 secs for new orders


theoamd

Recommended Posts

Κι άλλο post!

Πάει, το 'χω πάρει εγωιστικά το συγκεκριμένο subforum, θα γεμίσει με δικά μου post.

Anyway, πως μπορεί να υλοποιηθεί η παραπάνω ερώτηση;

Δεν θέλω να μπω στη διαδικασία κάποιου script της μορφής

while(1)
{
// do things here

if($your_condition === TRUE)
{
break 1;
}

sleep(3);
}

.

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

Link to comment
Share on other sites

Γιατί το θες αυτό?Και για τι τύπο sql command?INSERT UPDATE DELETE και σε τι DBMS?SQL Server?Oracle?MySQL?

INSERT σε MySQL.

Για ποιον λόγο να τσεκάρεις εσύ την βάση, ενώ μπορείς να βάλεις την σελίδα/πρόγραμμα να σε ειδοποιεί μόλις γίνει παραγγελία;

Καταλαβαίνω τι θέλεις να πεις, γιατί τα καταστήματα είναι γραμμένα σε opencart, το οποίο παρέχει άρτια τη συγκεκριμένη λειτουργία στο admin panel. Το θέμα είναι, όμως, ότι θέλουμε, αυτό να γίνεται για 4 καταστήματα.

μη ξεχασεις επισης να το κανεις compile με τα κατάλληλα flags ;)

PHP script μου έχει ζητηθεί.

Link to comment
Share on other sites

Καταλαβαίνω τι θέλεις να πεις, γιατί τα καταστήματα είναι γραμμένα σε opencart, το οποίο παρέχει άρτια τη συγκεκριμένη λειτουργία στο admin panel. Το θέμα είναι, όμως, ότι θέλουμε, αυτό να γίνεται για 4 καταστήματα.

if store_id = X

steile email sto x@x.gr

elseif store_id = Y

steile email sto Y@Y.gr

.

.

.

.

EDIT: Έχεις 4 καταστήματα στημένα στο ίδιο opencart?

Link to comment
Share on other sites

Δεν θέλω mail.

Πρέπει απλώς να είναι κάτι σαν εκτελέσιμο αρχείο, το οποίο με το που τεθεί σε λειτουργία, θα εμφανίζει ένα παράθυρο, στο οποίο θα καταγράφεται κάθε παραγγελία(από τη στιγμή που έχει ανοίξει το παράθυρο και έπειτα) που αφορά τα 4 καταστήματα.

Πρόκειται, επίσης, για 4 διαφορετικά καταστήματα, δηλαδή 4 διαφορετικά opencart.

Link to comment
Share on other sites

Φτιάχνεις ένα trigger στην mysql βάση του κάθε opencart.

MySQL :: MySQL 5.0 Reference Manual :: 18.3 Using Triggers

Μετά μπορείς να κάνεις αυτό.

MySQL :: MySQL 5.0 Reference Manual :: B.5 MySQL 5.0 FAQ: Triggers

Προσωπικά δεν το προτείνω καθόλου.Τι θα γίνει αν το εξωτερικό πρόγραμμα αποτύχει στην εκτέλεση του.

Εγώ θα το έκανα με τον παρακάτω τρόπο,πάλι με triggers.

Φτιάχνεις πάλι ένα trigger για τα inserts ή updates στο table που θες στην Mysql.

Μέσα στο trigger κάνεις export σε xml τα δεδομένα που θες πχ την πιο πρόσφατη εγγραφή.Διαφορετικό xml αρχείο για κάθε opencart.Περισσότερα

MySQL :: Using XML in MySQL 5.1 and 6.0.

Τώρα πια το μόνο που έχει να κάνει το php script σου ή εξωτερική εφαρμογή είναι να διαβάζει τα xml αρχεία.

Link to comment
Share on other sites

  • 3 weeks later...

Επιστρέφοντας στο thread...

Τελικά χρειάστηκα μόνο php.

Παραθέτω τον κώδικά μου και ένα screenshot:

<?php header('Refresh: 5');
echo '<body bgcolor="cccccc">';
$con=mysql_connect("server","myusername","mypass");
$db1="mydatabase";
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
else{echo 'Connected successfully';echo "<br>";}

mysql_select_db($db1,$con);
$sql="SELECT * FROM shoes ORDER BY Id DESC";
$result=mysql_query($sql,$con);
if (!($result)) {
die('Error1: '.mysql_error());
}
else
{
echo 'Successfull query!';
}
echo "<br/>"; echo "<br/>";
echo '<table border="5" cellpadding="6" cellspacing="0">';
echo '<tr bgcolor="#ccmkcc"><td><font color="red">Id</font</td><td><font color="white">Brand</font></td><td>Color</td><td>Size</td><td>Quantity</td><td>DatabaseName</td></tr>';
//echo '<tr><td>Id</td><td>Brand</td><td>Color</td><td>Size</td><td>Quantity</td></tr>';
$num_results=mysql_num_rows($result);
for($i=0;$i<$num_results;$i++)
{
$row=mysql_fetch_assoc($result);
if($i%2===0)
{
echo '<tr bgcolor="#E0FFFF" >';
echo '<td align="left">';echo($row['id']); echo '</td>';
echo '<td align="center">';echo($row['Brand']); echo '</td>';
echo '<td align="center">';echo($row['Color']);echo '</td>';
echo '<td align="center">';echo($row['Size']);echo '</td>';
echo '<td align="right">';echo($row['Quantity']);echo '</td>';
echo '<td align="right">';echo $db1;echo '</td>';
echo '<tr/>';
}
else
{
echo '<tr bgcolor="#FDF5E6">';
echo '<td align="left">';echo($row['id']); echo '</td>';
echo '<td align="center">';echo($row['Brand']); echo '</td>';
echo '<td align="center">';echo($row['Color']);echo '</td>';
echo '<td align="center">';echo($row['Size']);echo '</td>';
echo '<td align="right">';echo($row['Quantity']);echo '</td>';
echo '<td align="right">';echo $db1;echo '</td>';
echo '<tr/>'; }
}
echo '</table><br />';
?>

Το θέμα μας πλέον είναι η ταυτόχρονη διαχείριση 4 βάσεων και όχι μιας.

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

post-4476-1416077181,431_thumb.png

Link to comment
Share on other sites

Καλησπέρα,

πόσο σίγουρος είσαι ότι όσο μεγαλώνει η βάση η MySQL θα μπορεί να σου απαντάει σε 1 (ή πολυ περισσότερο σε 4) select μέσα σε 2 sec? Και indices να βάλεις υπάρχει μεγάλη πιθανότητα να έχεις πρόβλημα.

Με το συγκεκριμένο τρόπο που λύνεις το πρόβλημα στην ουσία βάζεις ένα όριο στο πλήθος των γραμμών που μπορούν να έχουν τα tables που κάνεις select ώστε να σου επιστρέφει αποτελέσματα η MySQL σε λιγότερο απο 2 sec.

Δοκίμασε να μεγαλώσεις αρκετά τα tables (ή δοκίμασε με sample μεγάλες DBs).

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Δημιουργία...

Important Information

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