Выберите EBADF: какой FD плох?

у Вас не будет многих ответов от Вашего PHP в одном запросе сделанными, попытаться собрать все данные, полученные от Вашего дб в переменной. Измените свой код php следующим образом.

header('Content-type: application/json');
$conn = new mysqli('localhost','root','example','tasks');
$stmt = $conn->query("SELECT * FROM task")->fetch_array();
$array = array();
while ($getResults = $stmt->fetch_array())
{
    $array[] = $getResults;
}

/* free result set */
mysqli_free_result($getResults);

/* close connection */
mysqli_close($conn);

echo json_encode($getResults);

Отношения

12
задан user109425 19 May 2009 в 14:57
поделиться

3 ответа

I agree with James. With poll(), you have revents per fd which can easily be checked.

I.e.

struct pollfd fds[NUM_FDS];
int ret, i;

...

ret = poll(fds, NUM_FDS, POLL_TIMEOUT);
for (i = 0; i < NUM_FDS; i++)
  if (fds[i].revents & POLLHUP || fds[i].revents & POLLNVAL)
     ... do something ...

Of course you would not implement it that way in the real world, its just an example. I stopped using select() a long time ago, poll() is a much better interface. You're correct, its just too easy to shoot yourself in the foot with select().

4
ответ дан 2 December 2019 в 22:06
поделиться

Скорее всего, select вызывается для закрытого файлового дескриптора. Обычным источником этого является повторное использование fd_set без его повторной инициализации. У вас что-нибудь происходит в обработчиках сигналов? (например, повторно открыть файл журнала на HUP?)

4
ответ дан 2 December 2019 в 22:06
поделиться

Если вы используете poll (), вы можете просматривать данные и искать, какой из fd дает сбой, что является большим преимуществом.

3
ответ дан 2 December 2019 в 22:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: