Voor een projectje waar ik mee bezig ben, heb ik voor een adminpagina een transactie nodig, want als er twee admins tegelijk bezig zijn (is niet onwaarschijnlijk) loop ik het risico van gegevensverlies.
Nu dacht ik aan de volgende code:
Ik heb het nog niet geprobeerd, maar gaat de bovenstaande code werken, en wat zijn de bijwerkingen van dit soort locks? Momenteel wil ik dit toepassen in een adminpagina die eenmaal per dag wordt bekeken. Wat zijn de gevolgen voor de performance als ik zoiets op iedere pageview uitvoer? (denk aan 10.000 tot 100.000 pageviews per dag)
Nu dacht ik aan de volgende code:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| <? // mysql initialisatie. $query = "SELECT ... FROM tabel WHERE ..."; $fp=fopen("../locks/admin.lock",'a+'); if(flock($fp,LOCK_EX,true)) { ftruncate($fp); fwrite($fp,"$username;"); $result = mysql_query($query); $data = mysql_result($result,0,0); $data = mysql_escape_string(IetsIngewikkelds($data)); $query = "UPDATE tabel SET data = '$data'"; mysql_query($query); flock($fp,LOCK_UN,true); } else { $user = fgetcsv($fp,40,";"); die('was locked by '. $user[0]); } ?> |
Ik heb het nog niet geprobeerd, maar gaat de bovenstaande code werken, en wat zijn de bijwerkingen van dit soort locks? Momenteel wil ik dit toepassen in een adminpagina die eenmaal per dag wordt bekeken. Wat zijn de gevolgen voor de performance als ik zoiets op iedere pageview uitvoer? (denk aan 10.000 tot 100.000 pageviews per dag)
edit:
enhancement
enhancement
edit:
bugfix
bugfix
Localhost, sweet localhost