высокие идентификаторы статуса твита, приводящие к невозможности открыть поток ошибок? - PullRequest
0 голосов
/ 15 апреля 2010

эрг. Начиная с последних нескольких дней высокие идентификаторы твитов (по крайней мере, кажется, что они связаны с идентификаторами, но я полагаю, что это может быть какое-то недавнее изменение в возвратах API) нарушают мой код. Сначала я попытался передать идентификатор в виде строки вместо целого числа этой функции, и я подумал, что это сработало, но на самом деле это был просто процесс загрузки файла с моей стороны.

Короче говоря, скрипт php генерирует эти вызовы функций, и когда он это делает, они терпят неудачу. Если я загружаю php-файл, в который сгенерирован вызов, удаляю серверную копию и повторно загружаю тот же самый файл, не меняя его, он работает нормально. Кто-нибудь знает, что может быть причиной такого поведения?

Ниже приведено то, что, как я подозреваю, является наиболее важной частью отдельных файлов, которые извлекают ошибки. Каждый из файлов назван для идентификатора статуса (например, файл ниже 12058543656.php)

<?php
    require "singlePost.php";
    SinglePost(12058543656)
    ?>

Вот код, который записывает вышеуказанные файлы:

<code>      $postFileName = $single_post_id.".php";
  if(!file_exists($postFileName)){
    $created_at_full = date("l, F jS, Y", strtotime($postRow[postdate])-(18000));
    $postFileHandle = fopen($postFileName, 'w+');
    fwrite($postFileHandle, '<html>
<head>
<title><?php $thisTITLE = "escarp | A brief poem or short story by '.$authorname.' on '.$created_at_full.'"; echo $thisTITLE;?></title><META NAME="Description" CONTENT="This brief poem or short story, by '.$authorname.', was published on '.$created_at_full.'">
<?php include("head.php");?>
To receive other poems or short stories like this one from <a href=http://twitter.com/escarp>escarp</a> on your cellphone, <a href=http://twitter.com/signup>create</a> and/or <a href=http://twitter.com/devices>associate</a> a Twitter account with your cellphone</a>, follow <a href=http://twitter.com/escarp>us</a>, and turn device updates on.
<pre><?php
    require "singlePost.php";
    SinglePost("'.$single_post_id.'")
    ?>
</div></div>
<? Php include ("foot.php");?> '); fclose ($ postFileHandle);} $ Postcounter ++; }

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

Ошибка:

Предупреждение: include (head.php) [function.include]: не удалось открыть поток: нет такого файла или каталога в /f2/escarp/public/12177797583.php в строке 4 Предупреждение: include (head.php) [function.include]: не удалось открыть поток: нет такого файла или каталога в /f2/escarp/public/12177797583.php в строке 4

Предупреждение: include () [function.include]: не удалось открыть head.php для включения (include_path = '.: / Nfsn / apps / php5 / lib / php /: / nfsn / apps / php / lib / php / ') в /f2/escarp/public/12177797583.php в строке 4 Чтобы получать другие стихотворения или короткие рассказы, подобные этой, от escarp на ваш мобильный телефон, создайте и / или свяжите учетную запись Twitter с вашим мобильным телефоном, подпишитесь на нас и включите обновления устройства.

Предупреждение: require (singlePost.php) [function.require]: не удалось открыть поток: такого файла или каталога в /f2/escarp/public/12177797583.php нет в строке 7

Предупреждение: require (singlePost.php) [function.require]: не удалось открыть поток: такого файла или каталога в /f2/escarp/public/12177797583.php нет в строке 7

Неустранимая ошибка: require () [function.require]: Не удалось открыть обязательный 'singlePost.php' (include_path = '.: / Nfsn / apps / php5 / lib / php /: / nfsn / apps / php / lib / php / ') в /f2/escarp/public/12177797583.php в строке 7

SinglePost ()

<?php
function SinglePost($statusID) {
require "nicetime.php";
$db = sqlite_open("db.escarp");
$updates = sqlite_query($db, "SELECT * FROM posts WHERE postID = '$statusID'");
$row = sqlite_fetch_array($updates, SQLITE_ASSOC);
 $id = $row[authorID];
 $result = sqlite_query($db, "SELECT * FROM authors WHERE authorID = '$id'");
 $row5 = sqlite_fetch_array($result, SQLITE_ASSOC);
  $created_at_full = date("l, F jS, Y", strtotime($row[postdate])-(18000));
  $created_at = nicetime($row[postdate]);
  if($row5[url]==""){
  $authorurl = '';
  }
  else{
    /*I'm omitting a few pages of output code and associated regex*/
    return;
  }
?>

1 Ответ

0 голосов
/ 15 апреля 2010

Я сомневаюсь, что высокие значения ID вызывают вашу проблему (по крайней мере, не связанные с типом данных).

Когда PHP обнаруживает целочисленное переполнение, автоматически преобразует значение в число с плавающей запятой , чтобы предотвратить его. Поэтому вы можете (несколько) представлять большие числа без каких-либо проблем.


При этом, пожалуйста, убедитесь, что полный путь к файлу не превышает ограничения длины пути вашей файловой системы и что количество файлов в вашей папке также не превышает ограничения (например, 65534 записей макс для NTFS разделов).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...