PHP-скрипты работают по-разному для запросов WinIten и браузеров

Проблема: PHP-скрипт не читает (пишет? Flush?) Файл должным образом.

  • платформа: windows7
  • веб-сервер: apache с php-5.4.6
  • набор инструментов c ++: msvc10
  • браузер (ы): хром, т.е.

Вот минимальный пример, который показывает проблему.

PHP скрипт открывает файл, читает число, увеличивает его и сохраняет обратно в тот же файл

 <?php
ini_set('error_reporting', 'on'); error_reporting(E_ALL);
$file = fopen("file.txt", "r+");
if ( $file )
{
$line = fgets( $file );
$list = sscanf( $line, "%d" );
$x = $list[0];
$x += 1;
fseek( $file, 0 );
fwrite( $file, $x );
fflush( $file );
fclose( $file );
echo $x;
}
?>

Когда я вызываю этот скрипт из браузера
http://localhost/test.php — все работает правильно — я вижу увеличенные числа после каждого обновления страницы: 1, 2, 3, …

но когда я пытаюсь сделать то же самое из кода C ++ (WinInet)

while ( true )
{
HINTERNET hInternet = ::InternetOpen( TEXT("WinInet"), INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL,0 );
if ( hInternet != NULL )
{
HINTERNET hConnect = ::InternetConnect( hInternet, TEXT("127.0.0.1"), INTERNET_DEFAULT_HTTP_PORT, NULL, NULL, INTERNET_SERVICE_HTTP, 0,1u );
if ( hConnect != NULL )
{
HINTERNET hRequest = ::HttpOpenRequest( hConnect, TEXT("GET"), TEXT("test.php"), NULL, NULL, 0, 0, 1 );
if ( hRequest != NULL )
{
BOOL bSend = ::HttpSendRequest(hRequest, NULL,0, NULL,0);
if ( bSend )
{
for (;;)
{
char  szData[1024];
DWORD dwBytesRead;
BOOL bRead = ::InternetReadFile( hRequest, szData, sizeof(szData)-1, &dwBytesRead );
if ( bRead == FALSE  ||  dwBytesRead == 0 )
break;
szData[dwBytesRead] = 0;
log << szData;
}
}
::InternetCloseHandle(hRequest);
}
::InternetCloseHandle(hConnect);
}
::InternetCloseHandle(hInternet);
}
Sleep( 1000 );
}

PHP скрипт увеличивает число только один раз, и я вижу следующий вывод:
1, 2, 2, 2, …

Есть ли какие-нибудь «пасхальные яйца» с WinInet или я что-то упустил?
Благодарю.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]