Class CTBClass {
Var $ file;
Var $ index;
// Establish a file and write input
Function NULL_WRITE ($ NEW)
{
$ f = fopen ($ this-> file, "w");
FLOCK ($ f, lock_ex);
FPUTS ($ F, $ New);
fclose ($ f);
}
// Add data record to the end of the file
Function add_write ($ new) {
$ f = fopen ($ this-> file, "a");
FLOCK ($ f, lock_ex);
FPUTS ($ F, $ New);
fclose ($ f);
}
/ / Take the return of readfile () to convert a row of data to a one-dimensional array
Function make_Array ($ line) {
$ array = expedition ("/ x0e", $ line);
Return $ array;
}
/ / Convert a row of data for a one-dimensional array
Function Join_Array ($ LINE) {
$ array = join ("/ x0e", $ line);
Return $ array;
}
/ / Return to the total number of data files
Function getLines () {
$ f = file ($ this-> file);
Return Count ($ F);
}
/ / Return to the data record (standby)
Function next_Line () {
$ this-> index = $ tris-> index ;
Return $ this-> get ();
}
/ / Return to the data record (standby)
Function prev_Line () {
$ this-> index = $ this-> index -;
Return $ this-> get ();
}
/ / Return to the current line of data record data smaller
Function get () {
$ f = fopen ($ THIS-> File, "R");
FLOCK ($ f, lock_sh);
For ($ I = 0; $ I <= $ this-> index; $ i ) {
$ REC = FGETS ($ F, 1024);
}
$ line = evLode ("/ x0e", $ REC);
fclose ($ f);
Return $ LINE;
}
/ / Returns the data record data of the current line
Function GET_BIG_FILE () {
$ f = fopen ($ THIS-> File, "R");
FLOCK ($ f, lock_sh);
For ($ I = 0; $ I <= $ this-> index; $ i ) {
$ REC = fgets ($ F, 1024 * 5);
}
$ line = evLode ("/ x0e", $ REC);
fclose ($ f);
Return $ LINE;
}
// Open data file --- Return to file content in one-dimensional array
Function read_file () {
IF (file_exists ($ this-> file) {
$ line = file ($ this-> file);
}
Return $ LINE;
}
/ / Open data file --- Return to file in two-dimensional array
Function OpenFile () {
IF (file_exists ($ this-> file) {
$ f = file ($ this-> file);
$ LINES = array ();
Foreach ($ f AS $ RAWLINE) {$ TMPLINE = EXPLODE ("/ x0e", $ rawline);
Array_Push ($ LINES, $ TMPLINE);
}
}
Return $ LINES;
}
/ / Incontinent into an array, combine into a line of data, and rewrote the entire file
Function Overwrite ($ array) {
$ newline = iMPLode ("/ x0e", $ array);
$ f = fopen ($ this-> file, "w");
FLOCK ($ f, lock_ex);
FPUTS ($ F, $ Newline);
fclose ($ f);
}
/ / Add a line of data to the end of the file
Function Add_Line ($ Array, $ Check_n = 1) {
$ S = IMPLODE ("/ x0e", $ array);
$ f = fopen ($ this-> file, "a");
FLOCK ($ f, lock_ex);
FPUTS ($ F, $ S);
IF ($ Check_n == 1) FPUTS ($ F, "/ N");
fclose ($ f);
}
// Insert a line of data records to the front of the file
Function Insert_Line ($ array) {
$ newfile = iMPLode ("/ x0e", $ array);
$ f = fopen ($ THIS-> File, "R");
FLOCK ($ f, lock_sh);
While ($ LINE = FGETS ($ F, 1024)) {
$ NEWFILE. = $ LINE;
}
fclose ($ f);
$ f = fopen ($ this-> file, "w");
FLOCK ($ f, lock_ex);
FPUTS ($ F, $ newfile);
fclose ($ f);
}
/ / Update all of the requirements of the requirements for a larger condition for each line byte data
Function Update ($ column, $ query_string, $ update_array) {
$ update_string = iMPLode ("/ x0e", $ update_array);
$ newfile = "";
$ fc = file ($ this-> file);
$ f = fopen ($ THIS-> File, "R");
FLOCK ($ f, lock_sh);
For ($ I = 0; $ i $ list = expedition ("/ x0e", $ fc [$ i]); IF ($ LIST [$ Column]! = $ query_string) { $ newfile = $ newfile.chop ($ FC [$ I]). "/ n"; } Else { $ NEWFILE = $ newfile. $ update_string; } } fclose ($ f); $ f = fopen ($ this-> file, "w"); FLOCK ($ f, lock_ex); FPUTS ($ F, $ newfile); fclose ($ f); } / / Update all the requirements of data records, suitable for situations of each line byte data Function Update2 ($ column, $ query_string, $ update_array) { $ NEWLINE = Implode ("/ x0e", $ update_array); $ newfile = ""; $ f = fopen ($ THIS-> File, "R"); FLOCK ($ f, lock_sh); While ($ LINE = FGETS ($ F, 1024)) { $ TMPLINE = EXPLODE ("/ x0e", $ line); IF ($ TMPLINE [$ column] == $ query_string) { $ NEWFILE. = $ NEWLINE; } Else { $ NEWFILE. = $ LINE; } } fclose ($ f); $ f = fopen ($ this-> file, "w"); FLOCK ($ f, lock_ex); FPUTS ($ F, $ newfile); fclose ($ f); } / / Delete all qualified data records for a larger condition for each line byte data Function delete ($ column, $ query_string) { $ newfile = ""; $ fc = file ($ this-> file); $ f = fopen ($ THIS-> File, "R"); FLOCK ($ f, lock_sh); For ($ I = 0; $ i $ list = expedition ("/ x0e", $ fc [$ i]); IF ($ LIST [$ Column]! = $ query_string) { $ newfile = $ newfile.chop ($ FC [$ I]). "/ n"; } } fclose ($ f); $ f = fopen ($ this-> file, "w"); FLOCK ($ f, lock_ex); FPUTS ($ F, $ newfile); fclose ($ f); } / / Delete all qualified data records for a smaller condition per line byte data Function delete2 ($ column, $ query_string) { $ newfile = ""; $ f = fopen ($ THIS-> File, "R"); FLOCK ($ f, lock_sh); While ($ LINE = FGETS ($ F, 1024)) { $ TMPLINE = EXPLODE ("/ x0e", $ line); IF ($ TMPLINE [$ Column]! = $ query_string) { $ NEWFILE. = $ LINE; } } fclose ($ f); $ f = fopen ($ this-> file, "w"); FLOCK ($ f, lock_ex); FPUTS ($ F, $ newfile); fclose ($ f); } / / Get the maximum value of a field in a file Function GET_MAX_VALUE ($ column) { $ TLINES = File ($ this-> file); For ($ I = 0; $ i <= count ($ tlines); $ i ) { $ line = expedition ("/ x0e", $ tlines [$ i]); $ get_value [] = $ line [$ column]; } $ get_max_value = max ($ get_value); return $ get_max_value; } / / Returns all eligible data in a two-dimensional array based on a field of the data file contains $ query_string Function SELECT ($ column, $ query_string) { $ TLINE = $ this-> openfile (); $ LINES = array (); Foreach ($ TLINE AS $ LINE) { IF ($ LINE [$ column] == $ query_string) { Array_Push ($ LINES, $ LINE); } } Return $ LINES; } // Function like Function Select (), speed may increase slightly Function SELECT2 ($ column, $ query_string) { IF (file_exists ($ this-> file) { $ TLINE = $ this-> read_file (); Foreach ($ TLINE AS $ TMPLINE) { $ line = $ this-> make_Array ($ tmpline); IF ($ LINE [$ column] == $ query_string) { $ LINES [] = $ tmpline; } } } Return $ LINES; } / / Returns the first eligible data in one-dimensional array based on a field of the data file contains $ query_string. Function Select_Line ($ column, $ query_string) { $ TLINE = $ this-> read_file (); Foreach ($ TLINE AS $ TMPLINE) { $ line = $ this-> make_Array ($ tmpline); IF ($ LINE [$ column] == $ query_string) { Return $ LINE; Break; } } } // select next / prev line (next_prev ==> 1 / next, 2 / prev) by CX Function select_next_prev_line ($ column, $ query_string, $ next_prev) { $ TLINE = $ this-> read_file (); $ line_key_end = count ($ tline) - 1; $ line_key = -1; Foreach ($ TLINE AS $ TMPLINE) { $ LINE_KEY ; $ line = $ this-> make_Array ($ tmpline); IF ($ NEXT_PREV == 1) {// next? IF ($ LINE [$ column] == $ query_string) { IF ($ LINE_KEY == 0) { Return 0; } Else { $ line_key_up = $ line_key - 1; Return $ up_LINE; } } Else { $ UP_LINE = $ LINE; } } Elseif ($ next_prev == 2) {// prev? IF ($ LINE [$ column] == $ query_string) {if ($ line_key == $ line_key_end) { Return 0; } Else { $ line_key_down = $ tine_key 1; Break; } } } Else { Return 0; } } $ down_line = $ this-> make_Array ($ tline [$ line_key_down]); Return $ down_LINE; } }