Jump to content


- - - - -

Наши разработки


  • You cannot reply to this topic
24 replies to this topic

#1 Эльказ

Эльказ

    PHP Specialist

  • Постояльцы
  • PipPipPipPipPipPip
  • 1,793 posts
  • Time Online: 5h 33m 54s

Posted 19 February 2008 - 05:10 PM

Здесь можно и нужно выкладывать свои разработки на РНР/Perl/Python и прочих языках веб-программирования.
Выкладываем по желанию - фрагменты и/или полные приложения.

Edited by Elkaz, 19 February 2008 - 07:18 PM.

  • 0

#2 Ilg

Ilg

    geek

  • Root Admin
  • PipPipPipPipPipPipPip
  • 2,717 posts
  • Time Online: 17d 6h 22m 31s

Posted 19 February 2008 - 07:15 PM

фрагменты будем выкладывать? или полные приложения? поподробнее про идею темы, плиз smile.gif
  • 0

#3 Эльказ

Эльказ

    PHP Specialist

  • Постояльцы
  • PipPipPipPipPipPip
  • 1,793 posts
  • Time Online: 5h 33m 54s

Posted 21 February 2008 - 02:30 PM

Описание: записал на диск музыку, однако проигрывать в машине отказался проигрывать их, из-за содержания "запрещенных" символов в названии.
Задача: переименовать все файлы находящиеся в папку music/. Если кому-то нужно будет переименовать и файлы во вложенных папках - юзайте рекурсию.

Syntax Highlighted Code: PHP
 
<?php
$folder = 'music'; # папка, где находится наша музыка
$result_folder = 'result'; # папку, в которую мы будем выводить исправленные файлы
$ext = '.mp3'; # расширение файлов
$dir = opendir($folder);
$new = 1;
while ($file = readdir($dir) ){
if ( $file != "." and $file != ".." ){
rename($folder."/".$file."", $result_folder."/".$new.$ext);
$new++;
}
}
?>
 


2 минуты работы и имеем такую прелесть smile.gif
  • 0

#4 sapsan

sapsan

    ayıq qafil

  • Постояльцы
  • PipPipPipPipPip
  • 837 posts
  • Time Online: 9h 32m 19s

Posted 21 February 2008 - 03:27 PM

в одном проекте пришлось показать номера кредитных карт в формате 'хххх хххх хххх хххх'.. искал в инете подходящие методы, но не нашел..
вот и написал такое, может кому нибудь понадибится..

Язык: C#

Код
public static string SplitLineWithSpaces(string line, int splitSymbolCount, int spaceCount)
{
    StringBuilder ln = new StringBuilder(line.Trim());
    StringBuilder spaces = new StringBuilder();
    int len = ln.Length;
    int pos = 0;
    if (len > 0)
    {
        if (len > splitSymbolCount)
        {
            for (int i = 0; i < spaceCount; i++)
            {
                spaces.Append(" ");
            }
            for (int i = 0; i < (len / splitSymbolCount); i++)
            {
                pos = ln.Length - (splitSymbolCount * (i + 1) + (i * spaceCount));
                ln.Insert(pos, spaces);
            }
        }
    }
    return ln.ToString().Trim();
}


использование..

Код
int symbolCount = 4;
int spaceCount = 2;
string line = "1234567890987654";
string result = SplitLineWithSpaces(line, symbolCount, spaceCount);
Console.WriteLine(string.Format("SymbolCount: {0}\nSpaceCount: {1}\nBefore: {2}\nAfter:  {3}\n\n", symbolCount, spaceCount, line, result));

symbolCount = 1;
spaceCount = 1;
line = "abcdefghijklmnopqrstuvwxyz";
result = SplitLineWithSpaces(line, symbolCount, spaceCount);
Console.WriteLine(string.Format("SymbolCount: {0}\nSpaceCount: {1}\nBefore: {2}\nAfter:  {3}\n\n", symbolCount, spaceCount, line, result));

symbolCount = 2;
spaceCount = 2;
line = "abcdefghijklmnopqrstuvwxyz";
result = SplitLineWithSpaces(line, symbolCount, spaceCount);
Console.WriteLine(string.Format("SymbolCount: {0}\nSpaceCount: {1}\nBefore: {2}\nAfter:  {3}\n\n", symbolCount, spaceCount, line, result));

symbolCount = 8;
spaceCount = 5;
line = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
result = SplitLineWithSpaces(line, symbolCount, spaceCount);
Console.WriteLine(string.Format("SymbolCount: {0}\nSpaceCount: {1}\nBefore: {2}\nAfter:  {3}\n\n", symbolCount, spaceCount, line, result));


результат..

Код
SymbolCount: 4
SpaceCount:  2
Before: 1234567890987654
After:  1234  5678  9098  7654


SymbolCount: 1
SpaceCount:  1
Before: abcdefghijklmnopqrstuvwxyz
After:  a b c d e f g h i j k l m n o p q r s t u v w x y z


SymbolCount: 2
SpaceCount:  2
Before: abcdefghijklmnopqrstuvwxyz
After:  ab  cd  ef  gh  ij  kl  mn  op  qr  st  uv  wx  yz


SymbolCount: 8
SpaceCount: 5
Before: ABCDEFGHIJKLMNOPQRSTUVWXYZ
After:  AB     CDEFGHIJ     KLMNOPQR     STUVWXYZ

  • 0

#5 Эльказ

Эльказ

    PHP Specialist

  • Постояльцы
  • PipPipPipPipPipPip
  • 1,793 posts
  • Time Online: 5h 33m 54s

Posted 21 February 2008 - 06:57 PM

Дело было вечером, делать было нечего.
Возможно встречали игру - Аннаграммы. Когда буквы в слове меняются местами и нужно угадать первоначальное значение? Вот написал скрипт, который автоматически меняет местами

Syntax Highlighted Code: PHP
 
<?php
//*** Аннаграммы ***//
// Powered by Elkaz © 2008 //
function aff ($word){
$len = strlen ($word);
$Arr = array();
 
for ($i = 0; $i < $len; $i++){
$Arr[] = $word[$i];
}
 
shuffle ($Arr);
 
$str = '';
for ($j = 0; $j < count ($Arr); $j++){
$str.= $Arr[$j];
}
 
return $str;
}
 
$word = $_GET['word'];
$word = preg_replace("/[^a-zа-я0-9\s]/i", "", $word);
echo 'Разгадайте слово: '.aff($word).'<br /><font color=#ffffff>'.$word.'</font>';
?>
 


Нужно было быстренько проверить, какие порты открыты на сервере. Реализация:

Syntax Highlighted Code: PHP
 
$host = $_GET['host'];
$timeout = 0.5;
$err = '';
$ports = array();
$ports = array(21, 23, 25, 53, 79, 80, 110, 111, 119, 139, 443, 513);
 
echo 'Scanning host: '.$host.' with timeout '.$timeout.' sec.';
echo '<pre>';
$o = $c = 0;
for ($i = 0; $i < count ($ports); $i++){
if (@fsockopen ($host, $ports[$i], $err, $err, $timeout)){ flush(); echo 'Port <b><font color=green>'.$ports[$i].'</font></b> - opened<br />'; $o++; }
else { flush(); echo 'Port <b><font color=red>'.$ports[$i].'</font></b> - closed<br />'; $c++; }
}
echo 'Total open ports: '.$o.'<br />';
echo 'Total close ports: '.$c.'<br />';
echo '</pre>';
 

  • 0

#6 Ilg

Ilg

    geek

  • Root Admin
  • PipPipPipPipPipPipPip
  • 2,717 posts
  • Time Online: 17d 6h 22m 31s

Posted 21 February 2008 - 08:08 PM

отправка HTTP запроса

Syntax Highlighted Code: PHP
/**
* Sends GET or POST request.
* Examples:
* sendToHost('www.google.com','get','/search','q=phl');
* sendToHost('www.example.com','post','/some_script.cgi',
* 'param=First+Param&second=Second+param');
*
* @param string $_host FQDN hostname.
* @param string $_path The /path/to/file.html part.
* @param string $_data Request parameters, without leading '?' mark.
* @param int $_port Port of the remote service.
* @param string $_method GET or POST, case-insensitive.
* @param string $_useragent If empty will send MSIE, if false no agent is sent.
* @return string result of request.
*/

public static function sendRequest(
$_host, $_path, $_data, $_port = 80, $_method = 'GET', $_useragent = '')
{
$_method = strtoupper($_method);
if (in_array($_method, array('GET', 'POST')) == false) {
$_method = 'GET';
}
$fp = fsockopen($_host, $_port);
if ($_method == 'GET') {
$_path .= '?' . $_data;
}
fputs($fp, $_method . ' ' . $_path . ' ' . 'HTTP/1.1' . "\r\n");
fputs($fp, 'Host: ' . $_host . "\r\n");
fputs($fp, 'Content-type: application/x-www-form- urlencoded' . "\r\n");
fputs($fp, 'Content-length: ' . strlen($_data) . "\r\n");
if ($_useragent) {
if (strlen($_useragent) == 0) {
fputs($fp, 'User-Agent: MSIE' . "\r\n");
}
else {
fputs($fp, 'User-Agent: ' . $_useragent . "\r\n");
}
}
fputs($fp, 'Connection: close' . "\r\n\r\n");
if ($_method == 'POST') {
fputs($fp, $_data);
}
$buf = '';
while (!feof($fp)) {
$buf .= fgets($fp, 128);
}
fclose($fp);
return $buf;
}

  • 0

#7 Эльказ

Эльказ

    PHP Specialist

  • Постояльцы
  • PipPipPipPipPipPip
  • 1,793 posts
  • Time Online: 5h 33m 54s

Posted 21 February 2008 - 09:21 PM

Ilg, небольшой оффтоп, но по теме:
1) Почему бы не заюзать cURL?
2) Зачем тут ООП? smile.gif
3) Где используешь?

Edited by Elkaz, 21 February 2008 - 09:22 PM.

  • 0

#8 Ilg

Ilg

    geek

  • Root Admin
  • PipPipPipPipPipPipPip
  • 2,717 posts
  • Time Online: 17d 6h 22m 31s

Posted 21 February 2008 - 09:33 PM

Elkaz,

это утил класс, приходится прибегать чтоб имитировать namespaces, ООП тут ни при чем.
поддержка cUrl-а не везде скомпилирована для пхп, особенно у азерб. админов lol.gif, поверь на слово.
и еще говорят, что cUrl не со всеми типами серверов работает корректно, но это я тока читал, сам не сталкивался.

ну хорошо, завтра я выложу спец для тебя что нить умное, из моего кода.

Edited by Ilg, 22 February 2008 - 06:17 AM.

  • 0

#9 sapsan

sapsan

    ayıq qafil

  • Постояльцы
  • PipPipPipPipPip
  • 837 posts
  • Time Online: 9h 32m 19s

Posted 22 February 2008 - 06:58 AM

шифрование и дешифрование текста.. ©RB

Язык: C#
declaration..

Код
using System.IO;
using System.Security.Cryptography;


.....

шифрование..

Код
public static string Encrypt(string text, string key, string IV)
{
    // IV - initialization vector
    TripleDESCryptoServiceProvider provider = new TripleDESCryptoServiceProvider();
    provider.KeySize = 128;
    provider.Key = Convert.FromBase64String(key);
    provider.IV = Convert.FromBase64String(IV);
    ICryptoTransform trans = provider.CreateEncryptor();
    MemoryStream ms = new MemoryStream();
    CryptoStream cs = new CryptoStream(ms, trans, CryptoStreamMode.Write);

    byte[] pass = Encoding.ASCII.GetBytes(text);
    cs.Write(pass, 0, pass.Length);
    cs.Flush();
    cs.FlushFinalBlock();

    ms.Position = 0;
    byte[] msbytes = new byte[ms.Length];
    ms.Read(msbytes, 0, msbytes.Length);

    return Convert.ToBase64String(msbytes);
}


дешифрование..

Код
public static string Decrypt(string text, string key, string IV)
{
    // IV - initialization vector
    TripleDESCryptoServiceProvider provider = new TripleDESCryptoServiceProvider();
    provider.KeySize = 128;
    provider.Key = Convert.FromBase64String(key);
    provider.IV = Convert.FromBase64String(IV);
    ICryptoTransform decoder = provider.CreateDecryptor();
    MemoryStream ms = new MemoryStream();
    byte[] itemBytes = Convert.FromBase64String(text);
    ms.Write(itemBytes, 0, itemBytes.Length);
    ms.Position = 0;
    CryptoStream cs = new CryptoStream(ms, decoder, CryptoStreamMode.Read);

    StreamReader rdr = new StreamReader(cs);
    return rdr.ReadToEnd();
}


использование..

Код
string key = "tFPHprSYocyd4cGXhFocAg==";
string iv = "Eor8Ckurj+4=";
string text = "Salamlar Eylence Ailesine!!";

string encryptedText = Encrypt(text, key, iv);

Console.WriteLine(string.Format("Key: {0}\nIV: {1}\nText: {2}\nEncrypted text: {3}\n", key, iv, text, encryptedText));

string decryptedText = Decrypt(encryptedText, key, iv);

Console.WriteLine(string.Format("Key: {0}\nIV: {1}\nEncrypted text: {2}\nDecrypted text: {3}\n", key, iv, encryptedText, decryptedText));


результат..

Код
Key: tFPHprSYocyd4cGXhFocAg==
IV: Eor8Ckurj+4=
Text: Salamlar Eylence Ailesine!!
Encrypted text: qo57sZsuEyE/GwyJPovtUwkQkUBJm2dtMyn3oDm2FYk=

Key: tFPHprSYocyd4cGXhFocAg==
IV: Eor8Ckurj+4=
Encrypted text: qo57sZsuEyE/GwyJPovtUwkQkUBJm2dtMyn3oDm2FYk=
Decrypted text: Salamlar Eylence Ailesine!!

  • 0

#10 Ilg

Ilg

    geek

  • Root Admin
  • PipPipPipPipPipPipPip
  • 2,717 posts
  • Time Online: 17d 6h 22m 31s

Posted 22 February 2008 - 07:20 AM

проверка статуса сетевых адаптеров в винде, язык C (использовалась для инициализации диалога GINA в WinLogon процессе)

Код
int
CheckNetworkAdapters()
{
    int nRes = RES_OK;

    WSADATA WinsockData;
    if (WSAStartup(MAKEWORD(2, 2), &WinsockData) != 0) {
        Debug(("CheckNetworkAdapters: Failed to find Winsock 2.2."));
        Debug(("CheckNetworkAdapters: Error code is %d.", WSAGetLastError()));
        return RES_ERR;
    }

    SOCKET sd = WSASocket(AF_INET, SOCK_DGRAM, 0, 0, 0, 0);
    if (sd == SOCKET_ERROR) {
        Debug(("CheckNetworkAdapters: Failed to get a socket."));
        Debug(("CheckNetworkAdapters: Error code is %d.", WSAGetLastError()));
        nRes = RES_ERR;
    }

    INTERFACE_INFO InterfaceList[20];
    unsigned long nBytesReturned;
    if (nRes == RES_OK && WSAIoctl(sd, SIO_GET_INTERFACE_LIST, 0, 0, &InterfaceList, sizeof(InterfaceList), &nBytesReturned, 0, 0) == SOCKET_ERROR) {
        Debug(("CheckNetworkAdapters: Failed calling WSAIoctl."));
        Debug(("CheckNetworkAdapters: Error code is %d.", WSAGetLastError()));
        nRes = RES_ERR;
    }
    if (nRes == RES_OK) {
        int nNumInterfaces = nBytesReturned / sizeof(INTERFACE_INFO);
        if (nNumInterfaces == 0) {
            nRes = RES_ERR;
        }
        else if (nNumInterfaces == 1) {
            sockaddr_in * pAddress;
            pAddress = (sockaddr_in *) & (InterfaceList[0].iiAddress);
            if (strcmp(inet_ntoa(pAddress->sin_addr), LOOP_IP) == 0) {
                nRes = RES_ERR;
            }
        }
    }

    WSACleanup();
    return nRes;
}

  • 0

#11 charlie

charlie

    rm -rf /

  • Новенькие
  • PipPip
  • 71 posts
  • :

Posted 22 February 2008 - 08:04 AM

Вот. Утаскивает книги с fenzin.org. Особенно правильно применять тогда, когда книгу нельзя скачать, а можно только читать. Писалось левой ногой на питоне. crazypilot.gif

В архиве 2 файла. Запускать так

Код
python fenzin_collector.py <book_id> <path_to_file>


Выкладываю в виде аттачмента, чтобы размер постов не разрастался. Просьба всем, у кого код занимает больше 10-30 строк делать также.

Attached Files


  • 0

#12 Ilg

Ilg

    geek

  • Root Admin
  • PipPipPipPipPipPipPip
  • 2,717 posts
  • Time Online: 17d 6h 22m 31s

Posted 22 February 2008 - 08:05 AM

XORим строку в Java

Код

public class XorCrypter
{
    /** XOR-ing key. */
    private String key;
    /** Set of chars that are allowed to be used in encrypted string. */
    private static String allowedChars =
        "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 !\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}";

    /**
     * @param key String
     */
    public XorCrypter(String key)
    {
        this.key = key;
    }

    /**
     * @return XOR-ed string.
     * @param str String
     */
    public String encrypt(String str)
    {
        String xorKey = (String) key;
        while (xorKey.length() < str.length()) {
            xorKey += xorKey;
        }
        xorKey = xorKey.substring(0, str.length());
        StringBuffer result = new StringBuffer(str);
        for (int i = 0; i < str.length(); i++) {
            int i1 = 0, i2 = 0;
            i1 = allowedChars.indexOf(str.charAt(i));
            i2 = allowedChars.indexOf(xorKey.charAt(i));
            int v = i1 ^ i2;
            if ((v < allowedChars.length()) && (v >= 0)) {
                result.setCharAt(i, allowedChars.charAt(v));
            }
        }
        return result.toString().substring(0, str.length());
    }

    /**
     * @return XOR-ed string.
     * @param str String
     */
    public String decrypt(String str)
    {
        return encrypt(str);
    }
}

  • 0

#13 charlie

charlie

    rm -rf /

  • Новенькие
  • PipPip
  • 71 posts
  • :

Posted 22 February 2008 - 08:45 AM

2 Ilg:

Кста, если там Java 5 - то лучше StringBuilder. Знаю, как привыкать сложно, на надо переучиваться.
  • 0

#14 Ilg

Ilg

    geek

  • Root Admin
  • PipPipPipPipPipPipPip
  • 2,717 posts
  • Time Online: 17d 6h 22m 31s

Posted 22 February 2008 - 09:00 AM

да, можно, код старый, я даже не обратил внимание ))
  • 0

#15 Эльказ

Эльказ

    PHP Specialist

  • Постояльцы
  • PipPipPipPipPipPip
  • 1,793 posts
  • Time Online: 5h 33m 54s

Posted 22 February 2008 - 11:24 PM

Часто бывает нужно "почистить" входящие данные от пользователя. Что бы там не было XSS/SQL injection и прочей гадости. Вот моя функция:

Syntax Highlighted Code: PHP
 
function clean ($var, $number = false, $sql = false){
if ($number == true) return (int) $var;
else {
$var = trim ($var);
$var = htmlspecialchars ($var);
if ($sql == true) $var = mysql_real_escape_string($var);
}
return $var;
}
 


Usage
Syntax Highlighted Code: PHP
 
$a = "or 1=1\*";
$b = "<script>alert();</script>";
$c = "<b <script>alert();</script></b>";
 
$a = clean($a, true);
$b = clean($b, false, true);
$c = clean($c, false, true);
 

Первый параметр - сами данные
Второй параметр - должны ли быть данные в виде integer (целого числа)
Третий - для вставки в mysql запрос.

Edited by Ilg, 25 February 2008 - 08:33 PM.

  • 0

#16 Ilg

Ilg

    geek

  • Root Admin
  • PipPipPipPipPipPipPip
  • 2,717 posts
  • Time Online: 17d 6h 22m 31s

Posted 23 February 2008 - 05:48 PM

получаем реальный IP клиента, с учетом прокси заголовков, PHP.

Syntax Highlighted Code: PHP
 
public function getRemoteIP($_single = true)
{
$ip = array($_SERVER['REMOTE_ADDR']);
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
if (isset($_SERVER['HTTP_X_REAL_IP'])) {
array_unshift($ip, $_SERVER['HTTP_X_REAL_IP']);
}
array_unshift($ip, $_SERVER['HTTP_X_FORWARDED_FOR']);
}
$ip = array_values(array_unique($ip));
if (isset($ip[0]) == false) {
$ip[0] = '0.0.0.0';
}
if ($_single) {
return $ip[0];
}
return $ip;
}
 


параметр $_single определяет возвращать ли только IP клиента, или также в массиве адрес прокси сервера. в случае массива, 0-ой элемент всегда реальный адрес клиента.

Edited by Elkaz, 25 February 2008 - 08:33 PM.

  • 0

#17 Эльказ

Эльказ

    PHP Specialist

  • Постояльцы
  • PipPipPipPipPipPip
  • 1,793 posts
  • Time Online: 5h 33m 54s

Posted 24 February 2008 - 10:38 PM

Иногда бывает засечь время, за которое страница была сгенерирована. Основываясь на http://php.net/microtime -
Syntax Highlighted Code: PHP
 
function execTime() {
static $start = 0;
 
if (!$start) {
$start = microtime(true);
} else {
printf('%.8f', microtime(true) - $start);
}
}
 
execTime();
 
// Some code...
 
execTime();
 

Edited by Elkaz, 25 February 2008 - 08:33 PM.

  • 0

#18 sapsan

sapsan

    ayıq qafil

  • Постояльцы
  • PipPipPipPipPip
  • 837 posts
  • Time Online: 9h 32m 19s

Posted 25 February 2008 - 10:14 AM

paging queries in oracle

Язык: PL/SQL

Код
TYPE result_cursor IS REF CURSOR;

...

  PROCEDURE get_page_data(v_table_name VARCHAR2,
                          v_column_names VARCHAR2, -- * -> all columns
                          v_filter VARCHAR2,
                          v_order_by VARCHAR2,
                          v_order_type NUMBER, -- ASC - 0, DESC - 1
                          v_start_row NUMBER,
                          v_end_row NUMBER,
                          c_result OUT result_cursor,
                          v_row_count OUT NUMBER)
  IS
    v_query VARCHAR2(32000) := '';
  BEGIN
        v_query := 'SELECT * FROM (';
        v_query := v_query || 'SELECT rownum rnum, a.* FROM (';
        v_query := v_query || 'SELECT ' || v_column_names || ' FROM ' || v_table_name;
        IF length(TRIM(v_filter)) > 0
        THEN
            v_query := v_query || ' WHERE ' || v_filter;
        END IF;
        v_query := v_query || ' ORDER BY ' || v_order_by;
        v_query := v_query || (CASE WHEN v_order_type = 0 THEN ' ASC' ELSE ' DESC' END);
        v_query := v_query || ') a WHERE rownum < ' || (v_end_row + 1);
        v_query := v_query || ') WHERE rnum > ' || v_start_row;

        OPEN c_result FOR v_query;

        v_query := 'SELECT COUNT(*) FROM ' || v_table_name;
        IF length(TRIM(v_filter)) > 0
        THEN
            v_query := v_query || ' WHERE ' || v_filter;
        END IF;

        EXECUTE IMMEDIATE v_query INTO v_row_count;
  END;

Edited by Elkaz, 25 February 2008 - 08:36 PM.

  • 0

#19 Эльказ

Эльказ

    PHP Specialist

  • Постояльцы
  • PipPipPipPipPipPip
  • 1,793 posts
  • Time Online: 5h 33m 54s

Posted 28 February 2008 - 07:56 PM

Нужно рассчитать, сколько времени осталось до какого-то события (программа не совсем моя, но тоже работал над ней)

Syntax Highlighted Code: PHP
 
function remain($ts1, $ts2, $week = true, $day = true, $hour = true, $min = true, $sec = true) {
$diff = abs ($ts1-$ts2);
#$y = floor($diff / (60 * 60 * 24 * 365)); $diff -= $y * 60 * 60 * 24 * 365;
#$m = floor($diff / (60 * 60 * 24 * 30)); $diff -= $m * 60 * 60 * 24 * 30;
$d = $h = $i = $s = 0;
 
if ($week == true) $w = floor ($diff / (60 * 60 * 24 * 7)); $diff -= $w * 60 * 60 * 24 * 7;
if ($day == true) $d = floor($diff / (60 * 60 * 24)); $diff -= $d * 60 * 60 * 24;
if ($hour == true) $h = floor($diff / (60 * 60)); $diff -= $h * 60 * 60;
if ($min == true) $i = floor($diff / 60); $diff -= $i * 60;
if ($sec == true) $s = floor($diff);
 
 
return $w.' недель '.$d.' дн. '.$h.' ч. '.$i.' мин. '.$s.' сек.';
}
 
$time1 = time();
$time2 = strtotime ("25 May 2008");
 
$a = remain ($time1, $time2);
echo "Буду в Москве через ".$a;
 




  • 0

#20 Ilg

Ilg

    geek

  • Root Admin
  • PipPipPipPipPipPipPip
  • 2,717 posts
  • Time Online: 17d 6h 22m 31s

Posted 29 February 2008 - 07:09 AM

код не мой, но полезный запрос, думаю
позволяет посмотреть в мускл 5 размер файлов данных и индексных файлов

Syntax Highlighted Code: MySQL
 
SELECT
CONCAT(table_schema,'.',table_name),CONCAT(ROUND(table_rows/1000000,2),'M') rows,
CONCAT(ROUND(data_length/(1024*1024*1024),2),'G') DATA,
CONCAT(ROUND(index_length/(1024*1024*1024),2),'G') idx,
CONCAT(ROUND((data_length+index_length)/(1024*1024*1024),2),'G') total_size,
ROUND(index_length/data_length,2) idxfrac FROM information_schema.TABLES
ORDER BY data_length+index_length DESC
 

  • 0





0 user(s) are reading this topic

members, guests, anonymous users